Problem:

Man hat das MySQL-Root-Passwort vergessen. Vorrausgesetzt es existiert ein root-User für MySQL (siehe Plesk: Admin-Passwort verloren) und es steht nicht in der Datei ~/.my.cnf (wo es eigentlich auch nicht stehen sollte).

1.Lösung (eine Shell):

Hier wird der Weg über eine MySQL-Initialisierungs-Datei gegangen:

/etc/init.d/mysql stop
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');" >~/setrootpassword.sql
mysqld_safe --init-file=~/setrootpassword.sql
#[ctrl]+[c]
/etc/init.d/mysql start
rm -f ~/setrootpassword.sql

PS: Falls mal alle User weg sein sollten, kann man natürlich auch einen neuen root-User anlegen. Statt SET PASSWORD ... muss dann folgender SQL-Befehl gesetzt werden:

GRANT ALL PRIVILEGES TO root@localhost IDENTIFIED BY 'MyNewPassword';

Selber Weg mit zwei Shells:

Erste Shell:

/etc/init.d/mysql stop
/usr/sbin/mysqld --skip-networking --skip-grant-tables

Zweite Shell:

mysqladmin -u root password "NEUESPW"

Wieder erste Shell:

#[ctrl]+[c]
/etc/init.d/mysql start

2.Lösung:

Diese wird als nicht so sicher angesehen, da das Passwort später in der MySQL-History sichtbar ist. Dies werden wir hier aber danach löschen.

Editier die my.cnf (/etc/my.cnf oder Debian: /etc/mysql/my.cnf) und schreibe in die [mysqld]-Sektion:
skip-grant-tables

/etc/init.d/mysql restart
mysql -uroot
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
exit
# "skip-grant-tables" wieder aus der my.cnf rausnehmen
/etc/init.d/mysql restart

Um das Passwort aus der MySQL-History zu löschen, öffnet man die Datei ~/.mysql_history im Editor, sucht nach der o.g. Zeile und löscht diese.

Kategorien:

Stichwörter:

mysql · mysqld · root · user · passwort · vergessen · verlegt · zurücksetzen · reset · init-file · my.cnf ·