MariaDB: Die Sache mit dem root-Passwort

Bei der aktuellen Debian-Version Stretch wird anstatt MySQL nun MariaDB verwendet. Manche wundert es vielleicht, dass bei der Installation von MariaDB nicht nach einem Passwort für den Datenbankbenutzer root gefragt wird, wie es sonst bei der Installation von MySQL der Fall war. Das liegt daran, dass sich der Linux-Benutzer root bei MariaDB direkt über das Unix-Domain-Socket als MySQL-Root ohne Passwort authentifizieren kann:

sudo mysql -u root

Das hat den Vorteill, dass Dienste und Skripte, die als root laufen, kein Passwort mehr benötigen um sich als MySQL-Root anzumelden (zum Beispiel Backup-Skripte, in die man ansonsten immer das MySQL-Root-Passwort eingetragen hätte).

"dann setze ich halt ein MySQL-Root-Passwort"

Aus Gewohnheit möchte man jetzt ein Passwort für den root-Benutzer vergeben, damit man sich auch über eine Schnittstelle wie phpMyAdmin einloggen und den Server administrieren kann (sofern man nicht auf der Kommandozeile arbeitet). Das kann ich aber nicht empfehlen, da andere Dienste davon ausgehen, dass sie sich direkt über das Socket mit root-Rechten (Linux Root) ohne Passwort authentifizieren können. Wenn man nun einfach ein Passwort für den Benutzer definiert, dann funktionieren diese Dienste eventuell nicht mehr und man erhält am nächsten Morgen eine Mail vom Cron Daemon mit einer Fehlermeldung wie zum Beispiel:

/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
error: error running shared postrotate script for '[…]'
run-parts: /etc/cron.daily/logrotate exited with return code 1

Dort kann man erkennen, dass versucht wurde, sich ohne Passwort zu authentifizieren, was dann aber aufgrund eines gesetzten Passworts fehlgeschlagen ist. Also, anstatt den Datenbankbenutzer root anzufassen, empfehle ich, einfach einen neuen Benutzer zur Administration anzulegen, mit dem man sich auch über phpMyAdmin einloggen kann.

Einen neuen Administrations-Benutzer anlegen

sudo mysql -u root
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password_here';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Es gibt übrigens auch noch ein Skript namens mysql_secure_installation, aber das definiert auch wieder ein Passwort für den root-Benutzer, was doof ist.

Der Autor

Hi. Ich bin Thomas. Hier veröffentliche ich in unregelmäßgen Abständen mehr oder weniger interessante Beiträge über Dies und Jenes, hauptsächlich über Computer und IT. Außerdem mag ich die Linux-Kommandozeile, vor allem wenn ich darauf mit (m)einer mechanischen Tastatur herumhacken kann. 😀