'MariaDB/MySQL' ist ein vollwertiges Datenbankmanagementsystem, das sich als Standarddatenbank im Zusammenspiel mit Webanwendungen etabliert hat. In Kombination mit dem Webserver Apache und der Scriptsprache PHP spielt es in den unterschiedlichsten Anwendungsszenarien seine Stärken aus. Nahezu alle Script- und Programmiersprachen unterstützen 'MariaDB/MySQL'.
Das Installationsscript erkennt automatisch, ob bereits ein 'MariaDB/MySQL' Server installiert ist. Vorhandene Datenbanken werden innerhalb der Versionslinie komplett übernommen.
Es können mehrere Versionslinien nebeneinander auf einer Maschine installiert werden. Somit kann, wenn eine Anwendung auf eine bestimmte ältere Version angewiesen ist, auch eine Neue Versionslinie für aktuelle Anwendungen installiert werden.
Zwischen den Versionslinien können die Datenbanken nicht vollautomatisch verschoben werden. Das lässt sich über die Menüfunktionen Backup und Restore erledigen. Es ist somit auch möglich wieder auf der vorherigen Versionslinie zu bleiben, wenn die Anwendung doch nicht mit der Neuen Versionslinie zurecht kommen will.
Sollte für den MariaDB/MySQL Benutzer 'root' noch kein Kennwort vergeben sein, so erfragt das Aktivierrungsscript die Eingabe eines solchen.
Aus Sicherheitsgründen sollte der Zugriff für den Datenbank Benutzer 'root' auf 'localhost' eingeschränkt werden. Es ist auch ausreichend, für den Datenbank Benutzer 'root' ein Passwort automatisch mit 'pwgen' während der Aktivierung erzeugen zu lassen.
Es kann für jeden anderen Datenbank Benutzer eine 'root' entsprechende Berechtigung gesetzt werden.
Der Zugriff auf einen Datenbank Server erfolgt mit „mysql“
mysql --user=${username} --passwort=${passwort} mysql -u${username} -p${passwort}
Wenn mehrere Datenbank Server auf einer Maschine laufen muss der lokale Zugriff mit dem Socket erfolgen, wenn nicht der default Server auf Port 3306 angesprochen werden soll.
mysql -u${username} -p${passwort} -S/run/mysql/${version}/mysql.sock
Der Zugriff auf einen Datenbank Server auf einer anderen Maschine erfolgt dann mit der Angabe von Hostname oder IP.
mysql -h${hostname} -u${username} -p${passwort}
Wenn auf der anderen Maschine mehrere Datenbank Server laufen ist auch die Angabe des Port erforderlich.
mysql -h${hostname} -u${username} -p${passwort} -P${port}
Die Konfiguration kann über den Menüpunkt „Edit Configuration“
geändert werden. Nach Beendigung des Editors wird die Konfiguration
automatisch auf Fehler überprüft. Werden Fehler festgestellt, so
sollten die entsprechenden Einträge in jedem Fall korrigiert werden.
Achtung, Übername der Konfiguration startet den MariaDB/MySQL Daemon neu und unterbricht dabei alle laufenden Datenbankzugriffe.
In dieser Dokumentaion wird für die Parameter der Name MARIADB verwendet. In den jeweiliegen Paketen wird der Paket Name verwendet und entspricht somit dem zweiten Teil des Parameters, es sind nicht unbedingt in allen Versionen alle Parameter vorhanden.
Wie:
START_MARIADB55
START_MARIADB103
START_MYSQL5173
Das Menü im Setup-Programm ist wie folgt aufgebaut:
x. | Service administration |
x. | Database server administration |
x. | MariaDB x.x administration |
x. | View documentation | ||
x. | Edit Configuration | ||
x. | Advanced configuration file handling | ||
x. | Show status | ||
x. | Stop service | ||
x. | Start service | ||
x. | Show connections | ||
x. | MariaDB security check | ||
x. | MariaDB Tools |
x. | List MariaDB user | ||
x. | Add MariaDB user | ||
x. | Remove MariaDB user | ||
x. | Change MariaDB user password | ||
x. | Database backup | ||
x. | Database restore | ||
x. | Database check | ||
x. | Initial database update | ||
x. | SQL Console | ||
x. | Logfile view |
In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende
Parameter vorhanden; wer sie von Hand editieren will, findet sie unter
/etc/config.d/mariadb.
Gültige Werte: yes, no
Standardeinstellung: START_MARIADB='no'
Gültige Werte: yes, no
Standardeinstellung: MARIADB_NETWORK='no'
Wenn mehrere MariaDB/MySQL Versionen auf einer Maschine laufen ist hier jeweils ein anderer Port als der Standard Port 3306 anzugeben.
Sollte es erforderlich sein einen speziellen Port, ausserhalb der Standardvorgaben zu benutzen, wird in '/etc/mysql/portlist' ein entsprechender Eintrag gemacht, jeder Eintrag kommt in eine eigene Zeile. Wenn die Datei nicht vorhanden ist, muss sie angelegt werden.
ACHTUNG
Die Port Angabe wird auch gleichzeitig für die Identifizierung
der jeweiligen lokalen Datenbank Server Instanz benutzt, sie
ist auch bei einem nur lokal verfügbaren Datenbank Server
so zu setzen, daß sie einmalig ist.
Gültige Werte: Port Nummer 3306, 3307, 3308 ...
Standardeinstellung: MARIADB_CONNECT_PORT='3306'
Gültige Werte: yes, no
Standardeinstellung: MARIADB_INSTALL_TESTDB='no'
xx entspicht der Version: 55 ⇒ mariadb55
Gültige Werte: ein Absoluter Pfad
Standardeinstellung: MARIADB_DATADIR='/srv/mysql/xx'
Wenn das Feld leer bleibt, werden keine Mail versandt.
Gültige Werte: leer, E-MailAdresse
Standardeinstellung: MARIADB_SEND_MAIL_FROM=''
(komplexe Definition): Legt fest, zu welchen Zeitpunkten dieser Job durch Systemd ausgeführt werden soll.
Ein Job wird von Systemd nur ausgeführt, wenn alle Kriterien zutreffen
(logisches UND);
Wenn genauere Datums- und Uhrzeitangaben erforderlich sind, verwenden OnCalendar-Ereignisse das folgende Format:
DayOfWeek Year-Month-Day Hour:Minute:Second
Beispiele:
Ein Sternchen kann verwendet werden, um einen beliebigen Wert anzugeben, und Kommas können verwendet werden, um mögliche Werte aufzulisten. Zwei durch '..' getrennte Werte zeigen einen zusammenhängenden Bereich an.
Im folgenden Beispiel wird der Dienst an den ersten vier Tagen jedes Monats um 12:00 Uhr ausgeführt, aber nur, wenn dieser Tag ein Montag oder Dienstag ist.
Mon,Tue *-*-01..04 12:00:00
Um einen Dienst am ersten Samstag jedes Monats auszuführen, verwenden Sie:
Sat *-*-1..7 18:00:00
Bei Verwendung des DayOfWeek-Teils muss mindestens ein Wochentag angegeben werden. Wenn Sie möchten, dass jeden Tag um 4 Uhr morgens etwas ausgeführt wird, verwenden Sie:
*-*-* 04:00:00
Die folgenden speziellen Ausdrücke können als Abkürzungen für längere normalisierte Formen verwendet werden:
minutely | ⇒ | *-*-* *:*:00 | |
hourly | ⇒ | *-*-* *:00:00 | |
daily | ⇒ | *-*-* 00:00:00 | |
monthly | ⇒ | *-*-01 00:00:00 | |
weekly | ⇒ | Mon *-*-* 00:00:00 | |
yearly | ⇒ | *-01-01 00:00:00 | |
quarterly | ⇒ | *-01,04,07,10-01 00:00:00 | |
semiannually | ⇒ | *-01,07-01 00:00:00 |
Weitere Informationen siehe Systemd-time
Standardeinstellung: MARIADB_BACKUP_SCHEDULE_TIME='*-*-* 01:15:00'
Gültige Werte: ein Absoluter Pfad
Standardeinstellung: MARIADB_BACKUP_TARGET='/srv/mysql_backup/xx'
Gültige Werte: Gruppenname
Standardeinstellung: MARIADB_BACKUP_GROUP=''
Gültige Werte: Zahl
Standardeinstellung: MARIADB_BACKUP_N='1'
Gültige Werte: keine Einschränkung
Standardeinstellung: MARIADB_BACKUP_x_NAME=''
Gültige Werte: yes, no
Standardeinstellung: MARIADB_BACKUP_x_ACTIVE='no'
Gültige Werte: Datenname
Standardeinstellung: MARIADB_BACKUP_x_FILE='mysql'
Gültige Werte: Zahl
Standardeinstellung: MARIADB_BACKUP_x_MAX='7'
Gültige Werte: yes, no
Standardeinstellung: MARIADB_BACKUP_x_FORCE='yes'
Beispiel: mount /mo
Standardeinstellung: MARIADB_BACKUP_MOUNT=''
Beispiel: umount /mo
Standardeinstellung: MARIADB_BACKUP_x_UMOUNT=''
Gültige Werte: eine Zahl aus dem core Pool
Standardeinstellung: MARIADB_COMPRESSION_THREADS='0'
Standardeinstellung: MARIADB_DEFAULT_COLLATION='utf8_unicode_ci'
Gültige Werte: IP-Adresse z.B. 127.0.0.1
Standardeinstellung: MARIADB_BIND_IP_ADDRESS=''
Mögliche Werte sind:
'small' | entspricht dabei Computern mit wenig Arbeitsspeicher | |
von unter 64MB. | ||
'medium' | dürfte für die meisten Maschinen die richtige Wahl sein. | |
'large' | verwendet man für SQL Server mit 512 MB und mehr. | |
'huge' | verwendet man für SQL Server mit 1024 MB und mehr. |
Standardeinstellung: MARIADB_MEMORY_OPT='medium'
Gültige Werte: 128k, 256k, ...
Standardeinstellung: MARIADB_THREAD_STACK_SIZE='128k'
Gültige Werte: Zahl
Standardeinstellung: MARIADB_MAX_ALLOWED_PACKET='1'
Gültige Werte: Zahl
Standardeinstellung: MARIADB_MAX_CONNECTIONS='200'
Gültige Werte: yes, no
Standardeinstellung: MARIADB_ACTIVATE_BINLOG='no'
Gültige Werte: Zahl
Standardeinstellung: MARIADB_MAX_BINLOG_SIZE='1024000'
Das MariaDB Toolmenü ist wie folgt aufgebaut:
Der Parameter 'host' spezifiziert die Netzwerkübergreifenden
Zugriffsrechte. Das Zeichen '%' ist hierbei
ein universeller Platzhalter für IP-Adressen und Domänennamen.
Standardwert ist hier 'localhost'.
Der MariaDB Benutzer 'root' sollte aus Sicherheitsgründen nur eine
Berechtigung für 'localhost' oder '127.0.0.1' erhalten.
Für Administrative Zwecke, über das Netzwerk, lässt sich jeder
beliebige andere Benutzer mit vollen Rechten ausstatten.
Werden mehrere MariaDB/MySQL Datenbank Server Versionen auf einer
Maschine betrieben, wird das Passwort für den Benutzer 'root' in
allen Datenbank Server Versionen gleichzeitig geändert.
Bei einem Umzug auf eine Neue Datenbank Versionslinie werden die
Backup Versionen in den Backup Ordner der Neuen Versionslinie,
kopiert und dann mittels Restore in der neuen Versionline über
das Menü in der neuen Versionslinie installiert.
Bei einem Umzug auf eine Neue Datenbank Versionslinie müssen
die Backup Versionen in den Backup Ordner der Neuen Versionslinie
kopiert werden und dann mittels Restore in der neuen Versionlinie
über das Menü in der neuen Versionslinie installiert.
Bei den unter MARIADB_BACKUP_x_FILE eingetragenen, zu überwachenden
SQL Datenbanken wird durch einen Schedule Job, in vorgegebenen Abständen
das Änderungsdatum abgefragt. Hat sich die Uhrzeit in einer der zur
Datenbank gehörenden Dateien seit dem letzten Backup geändert, so
wird eine Backup Datei erstellt. Der Backup-Dateiname wird um die
Datums- und Stundeninformation der letzten Änderung im Format:
-JJJJMMTT-HH erweitert. So kann theoretisch bis zu
einmal stündlich ein Backup erstellt werden. Voreingestellt ist das
Backup auf einmal täglich 01:15 Uhr.
Mit dem Parameter MARIADB_BACKUP_x_MAX kann die Anzahl der
gespeicherten Backups pro Datenbank begrenzt werden. Beim
überschreiten dieses Wertes wird die älteste Backupdatei gelöscht.
Beispiel:
Es gibt eine Reihe von Paketen die einen der MariaDB/MySQL Datenbank Server einsetzen.
Um an die entsprechenden default werte für den jeweiligen Datenbank Server zu gelangen ist folgende Vorgehensweise erfolgreich.
Dieses Beispiel ist für einen Datenbank Server der lokal läuft, also für 'localhost/127.0.0.1'.
Es eignen sich dafür z.B. folgende Parameter
MEIN_DATABASE_HOST = 'localhost'
MEIN_DATABASE_PORT = '3306'
Für den Parameter 'MEIN_DATABASE_PORT' ist ein Dialog Skript vorhanden, daß eingebunden werden kann.
MYSQL_COMMON_DATABASE_PORT_CUI.sh
Codeschnipsel:
# --------------------------------------------------------------------------- # prepare MariaDB/MySQL database # --------------------------------------------------------------------------- prepare_database() { # es werden die Server ermittelt, anhand config Daatei my_server=$(find /etc/config.d -maxdepth 1 \ -name 'mariadb' -printf '%f\n' -o \ -name 'mariadb[0-9]*' -printf '%f\n' -o \ -name 'mysql' -printf '%f\n' -o \ -name 'mysql[0-9]*' -printf '%f\n') # für jeden Server wird diese Schleife durchlaufen for SERVER in ${my_server} do # einlesen der jeweilige config Variablen . /etc/config.d/${SERVER} # umschreiben des Paketnamens von klein nach GROSS var_prefix=$(echo ${SERVER} | tr [:lower:] [:upper:]) # den Port ermitteln eval connect_port='${'${var_prefix}'_CONNECT_PORT}' # den speziellen Teil des Pfad ermittel my_path=$(echo ${SERVER} | sed 's|[^[:digit:]]||g') if [ ${MEIN_DATABASE_PORT:-0} -eq ${connect_port:-1} ] then # wenn MEIN_DATABASE_PORT gefunden break fi done } # aufrufen der Funktion prepare_database # Prüfen welch default Datei zusatendig ist if [ -n "${my_path}" ] then # das ist die neue, flexible Version . /srv/mysql/defaults.info else # das ist die alte, statische Version . /var/lib/mysql/defaults.info fi # Prüfen ob der Datenbank Server läuft if [ ! -f ${mysql_pid_file} ] then echo mecho --error 'MariaDB/MySQL Server is not running.' echo exit 1 fi # Prüfen ob der Datenbank Server ereichbar ist, # gelingt der Zugriff mit dem 'root' Passwort. ${mysql_basedir}/mysqladmin --socket=${mysql_socket} \ status >/dev/null 2>&1 if [ ${?} -eq 0 ] then bla..bla..bla... fi /etc/check.d/mein-package MEIN_DATABASE_HOST ” ” NOTEMPTY MEIN_DATABASE_PORT ” ” MYSQL_COMMON_DATABASE_PORT_CUI /etc/check.d/mein-package.exp MYSQL_COMMON_DATABASE_PORT_CUI = '(RE:PORT)' : 'Use database port 3306, 3307 ...'
Durch das includen von '/var/lib/mysql/defaults.info', bzw. über die flexible Variante in '/srv/mysql/defaults.info' können Pakete die default Werte von MariaDB/MySQL benötigen, die includierten Werte nutzen.
Enthalten sind folgende Variablen:
${mysql_basedir}
${mysql_datadir}
${mysql_pid_file}
${mysql_socket}
${mysql_log_error}
${mysql_port}
Sollte der Zugriff direkt auf die Variablen in der jeweiligen config erforderlich sein. Ist folgende Vorgehensweise erfolgreich.
. /etc/config.d/${init_server}
ermittelt wird z.B dann der START_PACKAGE Parameter
var_prefix=$(echo ${init_server} | tr [:lower:] [:upper:])
eval start='${START_'${var_prefix}'}'
if [ "${start}" = "yes" ] then bla..bla..bla fi
Zugriff auf alle weiteren Parameter erfolg analog
Der lokale Zugriff auf den Datenbank Server erfolgt immer mit Angabe des socket. Ohne Angabe des socket wird immer der default Datenbank Server auf Port 3306 angesprochen.
${mysql_basedir}/mysql{admin} --socket=${mysql_socket} bla..bla
Durch das includen von '. /srv/mysql/defaults.info' werden die Variablen ${mysql_basedir} und ${mysql_socket}aufgelöst.
Der Zugriff auf einen Datenbank Server auf einer anderen Maschine erfolgt dann mit der Angabe von --host=${hostname} und --port=${port}.