Home > Tipps & Tricks > Datenbanken, Schnittstellen > Falle bei Installation ab MySQL 5.7 / MariaDB 10.4.3

Falle bei Installation ab MySQL 5.7 / MariaDB 10.4.3

Geschrieben von   admin on    Mai 7, 2019

Ab MySQL 5.7 / Maria DB 10.4.3 wird, insbesondere wenn man bei der Installation kein root-Passwort vergibt, per Default dass Plugin auth_socket bzw. unix_socket installiert. Das hat bei mir bei einer Testinstallation für etwas Verwirrung gesorgt, weil der Datenbank-Connect einer Webanwendung partout nicht klappen wollte.

Für gewöhnlich entferne ich den MySQL User root, nachdem ich einen anders benannten administrativen User eingerichtet habe. Bei dieser Testinstallation sollte es aber schnell gehen und ich habe unter Debian 9 MariaDB installiert. Seit einer Weile kommt dieses nun voreingestellt mit einem Plugin, was nur dem Unix User "root" das Einloggen als MySQL User root erlauben soll. Das war mir nicht bewusst.

Nach der Installation liegt nun ein MySQL User root vor, der automatisch das Plugin auth_socket bzw. unix_socket zugeteilt bekommen hat. Auf der Kommandozeile kann man sich nun per mysql -u root -p einloggen. Und es ist egal, ob man dann ein irgendein Passwort eingibt oder nicht. Der Account ist mit dem Unix User root verknüpft.

Aufgefallen ist mir das ganze erst, nachdem bei einer Test-Installation des PHP Frameworks Laravel ein Datenbank Connect mit root einfach nicht klappen wollte. Nach längerem Probieren ist mir dann aufgefallen, dass auf der Kommandozeile nur dann mysql starten konnte, wenn ich es per sudo (oder nach vorherigem su root) aufrief. Nach einigem Grübeln und Recherche war klar: Es gibt einen (erklärbaren) Unterschied, je nachdem, welcher User den Datenbank-Connect aufbaut. Hier hatte ich mir anscheinend zusätzlich eingebildet, dem MySQL User root ein MySQL-Passwort zugewiesen zu haben.

Wer vor dem gleichen Problem steht und nur zu Testzwecken mal eine MySQL-Installation mit dem User root für den Connect einer z.B. in PHP geschriebenen Anwendung ausprobieren möchte, muss dann so vorgehen:


ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
SET PASSWORD = PASSWORD('<passwort>');
FLUSH PRIVILEGES;

oder

ALTER USER  'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '...';
FLUSH PRIVILEGES;

Absolut verwirrend finde ich, dass bei zugeordenetem auth_plugin / unix_plugin es egal ist, ob und was man für ein Passwort beim Start des Kommandozeilen-Tools mysql verwendet.

Tipps & Tricks:

Kommentare

Kommentar schreiben



(Ihre E-Mail-Adresse wird nicht angezeigt.)


Ungültiger Sicherheitscode

Bitte klicken Sie das Bild an, um einen neuen Sicherheitscode zu laden.