Réinitialiser le mot de passe root perdu ou oublié de MySQL ou Mariadb

Vous avez un serveur MySQL ou Mariadb qui tourne sur Linux Debian, Ubuntu, Fedora, CentOS ou Windows.
Malheureusement, vous avez oublié le mot de passe root de mysql.
Ainsi impossible de se connecter à MySQL en administrateur afin de créer une base de données ou un utilisateur.

Dans ce tutoriel, vous trouverez toutes les étapes pour rétablir le mot de passe root de MySQL.

Réinitialiser le mot de passe root perdu ou oublié de MySQL ou Mariadb

Réinitialiser le mot de passe root perdu ou oublié de MySQL sur Linux

Voici comment changer le mot de passe root MySQL lorsque vous l'avez perdu.

Arrêtez MySQL, ce dernier ne doit plus être en cours d'exécution:

/etc/init.d/mysql stop
killall -9 mysqld

Vérifiez avec ps que ce dernier ne tourne plus :

ps -ef|grep mysql

Relancez le serveur en mode sans échec (safe mode) :

mysqld_safe --skip-grant-tables --skip-networking &

Connectez-vous au serveur MySQL, validez par entrée la demande de mot de passe.
Il n'est plus nécessaire en mode sans échec, ce qui donne à nouveau accès au serveur MySQL.

mysql -u root -p

Puis on change le mot de passe avec la commande via une requête SQL.
Remplacez nouveaumotdepasse par le mot de passe que vous souhaitez attribuer.

update mysql.user set password=password('nouveaumotdepasse') where user='root';
update mysql.user set authentication_string=password('nouveaumotdepasse') where user='root';
FLUSH PRIVILEGES;
exit;

Tuer tous les processus MySQL pour relancer le serveur :

killall -9 mysqld_safe
killall -9 mysqld
/etc/init.d/mysql start

Puis testez la connexion avec le nouveau mot de passe root :

mysql -u root -p

Dans les versions précédentes de MySQL, il était possible d'utiliser mysqladmin ou Set Password pour changer le mot de passe root perdu.
Cela ne semble pas fonctionner sur Mariadb.
En effet, la commande SET PASSWORD ne fonctionne pas et retourne une erreur 1290 :

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nouveaumotdepasse');
ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement

De même le changement de mot de passe avec mysqladmin ne fonctionne pas.

mysqladmin -u root -p flush-privileges password 'kikoo'
Enter password:
mysqladmin: unable to change password; error: 'You are using MariaDB as an anonymous user and anonymous users are not allowed to modify user settings'
Bravo ! vous avez réussi à réinitialiser le mot de passe root MySQL sur Linux.

Réinitialiser le mot de passe root perdu ou oublié de MySQL sur Windows

Voici comment remettre à zéro le mot de passe root de MySQL sur Windows :

  • Sur votre clavier, appuyez sur la touche
    + R
  • Puis saisissez services.msc
  • Cherchez le service MySQL
  • Dessus, faites un clic droit puis Arrêter
  • Gardez la fenêtre des services Windows ouverte

Créez un fichier texte avec la commande pour modifier le mot de passe root :

  • Dans la recherche Windows, saisissez bloc-note
  • Sur ce dernier, faites un clic droit puis exécuter en tant qu'administrateur
  • Copiez/collez la commande suivante en modifiant motdepasse par le mot de passe souhaité
ALTER USER 'root'@'localhost' IDENTIFIED BY 'motdepasse';
  • Puis cliquez sur le menu fichier et enregistrer-sous
  • Positionnez-vous sur à la racine du disque C
  • Enregistrez le fichier sous le nom mysql-init.txt

Enfin on passe les commandes pour réinitialiser le mot de passe root :

cd "C:\Program Files\MySQL\MySQL Server*\bin"
mysqld --init-file=C:\\mysql-init.txt
  • Fermez les fenêtres puis sur la fenêtre des services Windows : faites un clic droit et démarrer sur le service Windows
  • Supprimez le fichier C:\mysql-init.txt
Bravo ! vous avez réussi à réinitialiser le mot de passe root MySQL sur Windows.

Liens

Tags: