Comment faire lorsqu'on n'a plus de mot de passe root de MySQL ?
Il faut redémarrer MySQL avec l'option
--skip-grant-tables. Avec cette option, il n'y a plus des droits sur les tables et tout le monde peut accéder à toutes les tables. Il faut donc en profiter pour changer rapidement le mot de passe root puis redemarrer MySQL sans cette option rapidement.
Connectez-vous en SSH sur votre serveur et suivez cette procédure :
- commençons par arrêter le serveur MySQL :
# /etc/init.d/mysql stop,
- puis relançons à nouveau le serveur sans aucun droits :
# safe_mysqld --skip-grant-tables &,
- nous allons maintenant nous connecter sur la base
mysql en root (sans mot de passe puisque les droits ont été désactivés) :
[root@julien /]# mysql -u root mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is *** to server version: ****
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
Vous êtes maintenant sur la console de MySQL et vous pouvez entrer directement des commandes en SQL. Pour changer le mot de passe, saisissez les commandes suivantes :
mysql> UPDATE user SET password=PASSWORD('nouveau_mot_de_passe') WHERE User="root" AND Host="localhost";
mysql> FLUSH PRIVILEGES;
nouveau_mot_de_passe représente un nouveau mot de passe de votre choix, vous devez donc le modifier avant de taper la commande. Vous pouvez maintenant quitter la console MySQL :
mysql> q
- le mot de passe est modifié, nous pouvons arrêter le serveur MySQL:
# killall mysqld,
- et le relancer normalement :
# /etc/init.d/mysql start
- pour tester le nouveau mot de passe, taper cette commande :
[root@julien /]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is *** to server version: ****
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
La documentation officielle de MySQL :
www.mysql.com/doc/en/Resetting_permissions.html.