Solved: Error 1698 (28000) in MySQL/MariaDB

None
Language icon Language: this article is available in: en

Vor einigen Tagen habe ich auf einem Ubuntu Server 16.04 LTS den Datenbankserver MariaDB installiert. Die Installation verlief über

sudo apt install mariadb-server

wie üblich, der Installationassistent fragte allerdings nicht mehr wie früher nach dem Root-Passwort. Auch nach der Installation war scheinbar kein Root-Passwort gesetzt - trotzdem wurden Anmeldeversuche mit der Fehlermeldung

ERROR 1698 (28000): Access denied for user 'root'@'localhost' (using password: YES)

abgewiesen.

Die Lösung und der Grund hierfür wurden schon hier beschrieben. Kurz zusammengefasst: die Anmeldung unter dem Benutzer 'root'@'localhost' läuft unter Server 16.04 über das Plugin "unix_socket" ab. Wird die Anmeldung unter dem Benutzer root (dem Systembenutzer!) durchgeführt, sollte es keine Probleme geben.

Wird trotzdem für z.B. phpMyAdmin der root-Zugang über ein Passwort benötigt, lässt sich das ganze folgendermaßen deaktivieren:

  1. per sudo mysql -u root -p in MySQL/MariaDB anmelden
  2. mittels use mysql; in die Systemdatenbank wechseln
  3. das Plugin per SQL-Befehl UPDATE user SET plugin='mysql_native_password' WHERE user='root'; deaktivieren (siehe Nachtrag)
  4. mit dem SQL-Befehl UPDATE user SET password=PASSWORD('passwort-hier-einfuegen') WHERE user='root'; ein Passwort setzen
  5. über flush privileges; den Cache löschen

Hiernach sollte die Anmeldung wieder funktionieren.

Nachtrag vom 09.11.2017

Da ich diesen Artikel seit Juli 2016 nicht mehr aktualisiert habe, er aber nach wie vor sehr oft aufgerufen wird, hier ein kleiner Nachtrag: wie Henry Jones mich darauf hingewiesen hat, darf der Inhalt von der Spalte plugin nicht mehr leer sein, wie es früher noch möglich war. Vorher stand im Artikel UPDATE user SET plugin='mysql_native_password' WHERE user='root';, das gilt jetzt nicht mehr.

 

Keine Kommentare

Kommentar verfassen