Dies ist eine alte Version des Dokuments!
Wenn Sie Ihr Root Passwort für die MySQL Datenbank verloren haben, gibt es mehrere Möglichkeiten dieses wieder zurückzusetzen. Eine Möglichkeit wäre zB ein File mit einem SQL Statement zu erzeugen und dieses »init«-File dem mysql-Daemon während eines sicheren Starts mitzugeben. Eine andere die MySQL Datenbank mit der Option »--skip-grant-tables« zu starten, was in etwa einer Single-User Shell auf einem unixoiden System gleich kommt.
Stoppen Sie den MySQL Daemon: Suchen Sie dazu die PID des Prozesses, welcher den Daemon ausführt. MySQL selbst legt eine Datei im Dateisystem mit dem Namen »mysqld.pid« oder »[Hostname].pid« ab. Diese Datei beinhaltet die aktuelle PID des laufenden mysqld-Prozesses:
# kill `cat /var/run/mysqld/mysqld.pid`
Legen Sie eine Datei mit folgenden SQL-Satements an. Der Name und Speicherort der Datei ist im Prinzip egal, hier im Beispiel wurde die Datei »/root/init-skript.sql« angelegt. Ersetzen Sie auch »MyNewPass« mit dem gewünschten Passwort:
/root/init-skript.sql
UPDATE mysql.USER SET Password=PASSWORD('MyNewPass') WHERE USER='root'; FLUSH PRIVILEGES;
Starten Sie die MySQL Datenbank mit der »--init-file« Option und übergeben Sie dieser Option das zuvor erstellte Skript:
# mysqld_safe --init-file=/root/init-skript.sql &
Beenden Sie im Anschluß mysqld wieder und starten ihn erneut im ganz normalen Modus. Danach sollten Sie in der Lage sein, sich an Ihrer Datenbank mit dem Benutzer root und dem neu vergebenen Passwort anzumelden.
zB Debian:
# /etc/init.d/mysqld restart
Folgendes SQL Statement setzt dem User root ein neues Passwort:
Stoppen Sie den mysql Dienst und starten Sie ihn wieder mit der »--skip-grant-tables« Option:
# /etc/init.d/mysql stop
# mysql --skip-grant-tables -uroot
So haben Sie wieder Zugang zur administrativen Konsole von MySQL und können dort das Passwort des root-Users wieder neu setzen. Laden Sie zuerst die Datenbank »mysql«, hier werden die User verwaltet:
mysql> use mysql
mysql>Database changed
mysql> update user set Password=PASSWORD('MyNewPass') where user='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
Starten Sie im Anschluss daran die Datenbank wieder ganz normal:
# /etc/init.d/mysql restart