Ab und zu kann es passieren, dass man sein Root-Passwort für den MySQL-Root vergessen hat. Um einer Neuinstallation von MySQLvorzubeugen, möchte ich hier Lösungswege zeigen, mit denen man sich wieder Zutritt zu MySQL verschaffen kann.
Grundsätzlich kann man das Rootpasswort so setzen
Öffnen Sie auf dem Server eine Root-Konsole.
Geben Sie folgenden Befehl ein:
mysqladmin --user=root --password=<altes_pw> password <neues_pw>
Wenn man aber nicht mehr als Root reinkommt helfen diese zwei Wege.
Der Weg über die Shell
Dabei wird MySQL gestoppt, um dann eine MySQL-Initialisierungs-Datei beim sicheren MySQL-Start aufzurufen.
# /etc/init.d/mysql stop
# echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');" >~/setrootpassword.sql
# mysqld_safe --init-file=~/setrootpassword.sql
Anschließend wird dieser Prozeß wieder gestoppt
[ctrl]+[c]
oder mit
# ps aux | grep mysql
# root 3313 0.0 0.0 11008 1364 ? S 08:10 0:00 /bin/sh /usr/bin/mysqld_safe
# kill 3313
Danach kann MySQL wieder normal gestartet werden. Und nach einem Löschen der Passwortdatei kann man sich wieder auf dem MySQL-Monitor einloggen.
/etc/init.d/mysql start
rm -f ~/setrootpassword.sql
Solletn alle User weg sein sollten, so kann man auch einen neuen root-User anlegen. Statt SET PASSWORD ... wird dann folgender MySQL-Befehl gesetzt werden:
GRANT ALL PRIVILEGES TO root@localhost IDENTIFIED BY 'MyNewPassword';
Oder mit zwei Shells
1. Shell:
# /etc/init.d/mysql stop/usr/bin/mysqld --skip-networking --skip-grant-tables
2. Shell:
# mysqladmin -u root password "NEUESPW"
Zurück in der 1. Shell:
[ctrl]+[c]
# /etc/init.d/mysql start
Der Weg über die Konfigurationsdatei my.cnf
Da dieser Weg wegen der Sichbarkeit in der MySQL-History unsicher ist, muss diese später editiert werden.
Wir editieren die my.cnf /etc/mysql/my.cnf (Debian) oder unter /etc/my.cnf) und schreiben in die [mysqld]-Sektion:
skip-grant-tables
# /etc/init.d/mysql restart
# mysql -u root
>UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
>quit
Der Eintrag "skip-grant-tables" muss jetzt wieder aus der my.cnf herausgenohmen werden. Dann wird MySQL neugestartet.
# /etc/init.d/mysql restart
Das Passwort löschen wir aus der MySQL-History des Benutzers, indem wir die Datei ~/.mysql_history mit einem Editor im jeweiligen HOME-Verzeichnis öffnet, nach der oben genannten Zeile sucht und sie löscht.
70376 Stuttgart
James-F.-Byrnes-Strasse 9
fon: +49(0)7 11 - 806 31 12
fax: +49(0)7 11 - 806 31 69
Aktualisiert am 13.07.2008