Récupérer (ou casser) le mot de passe root dans MySQL

janvier 25, 2007  |   Blog   |     |   Commentaires fermés sur Récupérer (ou casser) le mot de passe root dans MySQL

Je me suis trouvé dernièrement sur un serveur MySQL dont j’avais oublié le mot de passe correspondant à l’utilisateur root.

La procédure suivante permet de stopper mysql :

killall mysqld

On peut ensuite le relancer en spécifiant l’option -Sg, ce qui a l’effet suivant (extrait de man mysqld)

-Sg|--skip-grant-tables

This option causes the server not to use the privilege system at all. This gives everyone full access to all databases! (You can tell a running server to start using the grant tables again by executing mysqladmin flush-privileges or mysqladmin reload.)

Ce qui donne en pratique :

/usr/libexec/mysqld -Sg --user=root &
/usr/libexec/mysqld: ready for connections
mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1 to server version: 3.x

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

On se rend dans la base de données interne nommée mysql :

mysql> USE mysql
Reading table information for completion of table and column names. You can turn off this feature to get a quicker startup with -A
Database changed

On peut ensuite écraser le user root et son mot de passe :

mysql> UPDATE user
-> SET password=password("mon_nouveau_mot_de_passe")
-> WHERE user="root";
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql 
exit

On peut ensuite relancer le service MySQL plus traditionnellement :

killall mysqld
service mysqld start

Les commentaires sont fermés.