MariaDB
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
MariaDB ist eine Abspaltung (Fork) von MySQL. Diese wurde entwickelt, nachdem Oracle Sun Microsystems im Jahre 2010 übernommen hatte. MariaDB ist größtenteils kompatibel mit MySQL und kann MySQL meist ohne Probleme ersetzen (API-kompatibel). Es werden die Prozessorarchitekturen x86 und AMD64 unterstützt.
Unterschiede zwischen MySQL und MariaDB:
MariaDB verwendet die "Storage-Engine" XtraDB als Ersatz für InnoDB.
Es gibt weitere "Storage-Engines": OQGRAPH, SphinxSE, IBMDB2I, Cassandra und Aria (Ersatz für MyISAM).
Alphanumerische Felder in Heap-Tabellen können eine Größe von 256 Zeichen übersteigen.
Unterstützung von Pool of Threads 🇬🇧, um auch mit 200000+ Verbindungen noch hohe Geschwindigkeit zu garantieren
"sub queries" sind nun benutzbar.
Es gibt nun Group commits 🇬🇧.
Installation¶
Hinweis:
Man kann nicht gleichzeitig MariaDB und MySQL installiert haben, es sei denn, man installiert die Datenbank manuell. Wer es ausprobieren möchte, sollte sich MariaDB coexist with MySQL 🇬🇧 ansehen. Es ist allerdings anzumerken, dass es nicht zu empfehlen ist, diese Konstellation produktiv einzusetzen, da sie ungetestet ist.
MariaDB ist in der Standard-Version (ohne Galera-Cluster) seit Ubuntu 14.04 in den offiziellen Paketquellen enthalten.
Einzelinstallation¶
Installation ohne Interaktionen mit anderen MariaDB-Installationen:
mariadb-server (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install mariadb-server
Oder mit apturl installieren, Link: apt://mariadb-server
Konfiguration¶
Root-Passwort setzen¶
Bei der Installation wird kein Root-Passwort vergeben und man kann sich einfach mit der Konsoleneingabe
sudo mysql -u root
als root
einloggen (statt mysql
funktioniert auch mariadb
). Ohne Root-Passwort kann man sich aber nur lokal oder per SSH-Shell auf das DBMS aufschalten. Sinnvoll ist es daher, ein Root-Passwort vorzugeben. Dazu meldet man sich lokal oder per SSH-Shell als root
an dem DBMS an und setzt dann ein Passwort:
sudo mysql -u root MariaDB [(none)]> update mysql.user set password=password('geheim') where user='root'; MariaDB [(none)]> flush privileges;
In neueren Versionen der MariaDB (>= 10.4, eventuell auch schon vorher) funktioniert der obige Befehl nicht mehr, dann ist der folgende Befehl zu verwenden:
sudo mysql -u root MariaDB [(none)]> SET PASSWORD FOR root@localhost = PASSWORD('geheim'); MariaDB [(none)]> flush privileges;
In einigen Konstellationen ist es erforderlich, ein Login-Plugin von MariaDB zu entfernen, damit die Anmeldung tatsächlich funktioniert. Sollte die Meldung
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
trotz Setzen eines Passworts erscheinen, so ist zumeist ein unix-socket-Plugin aktiv, das deaktiviert werden muss.
MariaDB [(none)]> use mysql MariaDB [mysql]> SELECT user, plugin FROM user; +------+-------------+ | user | plugin | +------+-------------+ | root | unix_socket | +------+-------------+
Das Standardauthentifizierungsverfahren ist "mysql_native_password". Es erfordert keine zusätzliche Installation und kann wie folgt genutzt werden:
MariaDB [(none)]> UPDATE mysql.user SET plugin='mysql_native_password' WHERE user='root';
Passwortloses Arbeiten¶
Um SQL-Befehle auszuführen, ohne sich jedes Mal bei MariaDB anmelden zu müssen, kann man im Homeverzeichnis die Datei ~/.my.cnf mit folgenden Inhalt anlegen:
[client] host = localhost user = BENUTZERNAME password = PASSWORT socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = BENUTZERNAME password = PASSWORT socket = /var/run/mysqld/mysqld.sock basedir = /usr
Danach sollte man noch die Zugriffsrechte auf den Benutzer beschränken:
chmod 600 ~/.my.cnf
Remote-Zugriffe erlauben¶
Standardmäßig erlaubt das DBMS nur lokale Zugriffe. Möchte man auch von anderen Rechnern im Netzwerk darauf zugreifen, dann muss man die Datei /etc/mysql/mariadb.conf.d/50-server.cnf mit Root-Rechten [4][7] bearbeiten. Hier ist anstelle von
bind-address = 127.0.0.1
die lokale Adresse des Servers eingetragen werden; z.B.:
bind-address = 192.168.0.89
Um auf allen (zukünftigen) IP-Adresses zu lauschen, kann die Adresse 0.0.0.0 eingetragen werden. _Achtung:_ Dies sollte nur in vertrauenswürdigen Netzwerk(segmenten) gemacht werden, nachdem ein sicheres Passwort eingerichtet wurde.
bind-address = 0.0.0.0
Danach muss der Dienst noch neu gestartet werden:
sudo service mariadb restart
Nun kann das DBMS über das Netzwerk angesprochen und z.B. das Web-Tool phpMyAdmin genutzt werden.
Ändern des Datenbank-Verzeichnisses¶
Das Standardverzeichnis für Datenbanken ist /var/lib/mysql. Möchte man dieses abändern, sind die folgenden Schritte notwendig.
Zuerst muss die Datei /etc/mysql/my.cnf mit einem Editor mit Root-Rechten [4][7] geöffnet werden. Dort sucht man die Zeile datadir
und ändert hier den Wert auf das neue Verzeichnis, in dem MariaDB die Datenbank-Dateien ablegen soll.
Anschließend müssen die Systemdatenbanken, welche bei der Installation immer automatisch angelegt werden, vom Verzeichnis /var/lib/mysql in das neue Datenbankverzeichnis kopiert werden. Dabei ist zu beachten, dass Eigentümer und Gruppe der Dateien nicht verändert werden.
Beim Wechsel von MySQL ist zusätzlich die Anpassung von /etc/apparmor.d/usr.sbin.mysqld erforderlich, da AppArmor den Zugriff auf andere Verzeichnisse unterbindet. Siehe hierfür den Artikel von MySQL (Abschnitt „Datenpfad“) im Wiki.
Zu beachten ist, dass per Voreinstellung die Datenbank nicht in den Verzeichnissen /home, /root und /run/user angelegt werden kann. Ist dies gewünscht, muss dieses in der systemd Unit, die MariaDB startet, explizit erlaubt werden. Das Vorgehen ist in der Knowledgebase von MariaDB 🇬🇧 beschrieben.
Nutzung¶
MariaDB kann man für die verschiedensten Dinge gebrauchen.
Als Backend für diverse Webanwendungen
Um Benutzerdatenbanken zu verwalten
Abgleich von Datenmengen
Einen Zugriff auf die Datenbanken kann man mit fast jeder Programmiersprache realisieren. Oftmals gibt es schon vorgefertigte Lösungen. Dank SQL ist das Hantieren mit den Daten leicht und bequem.
Links¶
Projektseite 🇬🇧
MariaDB - Wikipedia