Wer kennt das nicht: man holt eine Kiste (in meinem Fall eine Azure-VM) aus der Versenkung und möchte sich auf dem dort installierten MySQL-Datenbankserver einloggen. Als Root natürlich.
Erstes Standardpasswort (geben wir, die meisten nutzen de facto nur ein paar Standardpasswörter überall) geht nicht. Zweites auch nicht. Mist, was habe ich denn damals für ein Passwort vergeben? Aufzeichnungen gibt es natürlich keine, war nur eine kurze Testinstallation, die braucht man nicht aufschreiben…
Keine andere Wahl, man muss das Root-Passwort zurücksetzen. Nur wie?
Natürlich geht es nicht ganz einfach. Sonst würde jeder es können. Man braucht auf jeden Fall einen SSH Zugang auf die Maschine und sudo Berechtigung (meine betreffende Maschine läuft unter Ubuntu) oder einen root User (bei anderen Linuxen)
Zunächst einmal stoppen wir den laufenden Server:
sudo /etc/init.d/mysql stop
Für den abgesicherten Start brauchen wir ein Verzeichnis, wo MySQL schreiben kann:
sudo mkdir /var/run/mysqld
sudo chown mysql /var/run/mysql
Jetzt kann MySQL in einem abgesicherten Modus gestartet werden. Unbedingt auf das & Zeichen achten, damit man die Konsole wieder zurückbekommt.
sudo mysqld_safe --skip-grant-tables &
Dadurch bekommen wir eine MySQL Instanz, in welche man sich lokal ohne Passwort einloggen kann. Diese Instanz soll natürlich nur zum Passwortreset benutzt werden!
sudo mysql -u root USE mysql;
Um das Passwort zurück zu setzen überschreiben wir es durch ein neues und nutzen die MySQL-Funktionalität PASSWORD dazu, um es gleich zu kodieren:
UPDATE user SET authentication_string=PASSWORD("neuespasswort") WHERE User='root'; FLUSH PRIVILEGES; exit;
Bitte unbedingt darauf achten, dass MySQL mittlerweile case sensitiv ist! Das war früher nicht so, wie so mancher Webdesigner schon mal mit einem Update des Servers schmerzhaft festgestellt hatte. “NeuesPasswort” ist also nicht gleich “neuespasswort”!
Jetzt bleibt nur noch, den Safe-MySQL zu stoppen und den regulären zu starten:
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Nicht vergessen, das neue Passwort zu merken!