Il peut arriver d'oublier son mot de passe root MySQL [1], n'est-ce pas blowup ? :p

C'est très embêtant car pour redéfinir un nouveau mot de passe root, il faut entrer le mot de passe... root, et réinventer ainsi le mouvement perpétuel...

Voici une méthode pour lancer MySQL sans requérir d'authentification, et ainsi pouvoir assigner un mot de passe à l'utilisateur root. Attention, cette méthode ne doit pas être utilisée sur des serveurs de production et/ou sensibles, car à ce moment toutes vos bases sont accessibles à tous les utilisateurs MySQL.

Dans un shell, entrez la séquence de commandes suivante :

$ sudo -s
# /etc/init.d/mysql stop
# mysqld -u mysql --skip-grant

Attention, maintenant MySQL est lancé sans authentification, c'est à dire qu'il est ouvert à tous les utilisateurs. Vous pouvez également arrêter Apache2 afin de limiter les possibilité d'execution de scripts accédant à des bases non autorisées :

# apache2ctl stop

Note : Si vous utilisez d'autres services permettant l'accès à MySQL, je vous recommande fortement de les arrêter de même. Vous pourrez les relancer à la fin de l'opération.

Là, ouvrir un nouveau shell pour définir un nouveau mot de passe root/MySQL (CTRL + Shift + T dans gnome-terminal)

# mysqladmin -u root flush-privileges password "nouveau_mot_de_passe"

Fermer le premier shell, et tuez le daemon mysql ignorant l'authentification, puis relancez mysql au moyen de la commande :

# /etc/init.d/mysql restart

Si vous aviez stoppé Apache, voire d'autres services, il est tant de les relancer :

# apache2ctl start
# ...

Normalement, ça devrait rouler...

Notes

[1] qui, rappelons-le, n'est pas le même que l'utilisateur root du système