staging.inyokaproject.org

MariaDB

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

./MariaDB_Logo.png 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:

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.

Diese Revision wurde am 12. November 2022 18:05 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Netzwerk, Server, Internet, Programmierung, Datenbank