Aie! J’ai perdu mon mot de passe root MySQL
En cas de perte du mot de passe root surtout si c’est votre seul compte (super) administrateur, vous vous trouvez dans une situation pour le moins embarrassante.
MySQL propose un moyen de s’en sortir. Certes, si le mot de passe est perdu vous ne pourrai pas le récupérer, car il est stocké haché dans la base:
mysql> SELECT user, password FROM mysql.user; +---------+-------------------------------------------+ | user | password | +---------+-------------------------------------------+ | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +---------+-------------------------------------------+ 1 rows in set (0.39 sec)
Néanmoins il est possible de le changer. Voici les étapes à suivre:
1/ Arrêter le serveur MySQL
Cela ne devrait pas poser trop de problèmes:
mysql stop (sous linux)
NET STOP MySQL (sous windows)
…
ou dans le pire des cas, débranchez la machine 🙂
2/ Démarrer le serveur en désactivant la vérifications des droits
$ mysqld --skip-grant-tables
Il important de noter qu’une fois démarré avec skip-grant-table, n’importe qui peut se connecter au serveur MySQL et avec tout les droits… Inutile de préciser que le serveur est à ce moment particulièrement vulnérable.
3/ Connexion au serveur MySQL
Connectez vous au serveur mysql, comme à l’accoutumée.
$ mysql --user=UtilisateurExistantPas --password=MotDePasse Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.30-community-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
4/ Protéger le serveur
La première chose à faire, une fois connecté est de sécuriser le serveur en remettant en place la vérification des droits:
mysql> FLUSH PRIVILEGES;
$ mysql --user=UtilisateurExistantPas --password=MotDePasse ERROR 1045 (28000): Access denied for user 'UtilisateurExistantPas'@'localhost' (using password: YES)
5/ Changer le mot de passe
L’heure est enfin venue de se créer un nouveau mot de passe root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('m0T2pA55e'); Query OK, 0 rows affected (0.06 sec)
6/ Arrêter le serveur
Pour sortir de la configuration skip-grant-tables, il faut arrêter le serveur, pour mieux le redémarrer…
7/ Redémarrer le serveur normalement
et le tour est joué 🙂
$ mysql --user=root --password=m0T2pA55e Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.30-community-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
Je trouve la procédure plus rapide depuis le passage de Linux de SysVinit à systemd.
-> http://www.dsfc.net/logiciel-libre/mysql-logiciel-libre/perte-mot-de-passe-root-mysql-mariadb/