Comment réinitialiser le mot de passe root de la base de données MySQL ou MariaDB

Réinitialiser le passe root sur MySQL/MariaDB

Oublier son mot de passe arrive à tout le monde. Si vous oubliez ou perdez votre mot de passe root de base de données MySQL ou MariaDB. Vous n’avez besoin que d’un accès SSH au serveur et d’un compte utilisateur ou d’un mot de passe root avec des privilèges sudo pour accéder et réinitialiser la base de données.

Ce guide aborde comment réinitialiser le mot de passe root de votre base de données des versions tant anciennes qu’aux récentes de MySQL et MariaDB.

Prérequis

Afin de récupérer votre mot de passe root MySQL / MariaDB, vous aurez besoin d’accès au serveur Linux exécutant MySQL ou MariaDB doté d’un utilisateur sudo.

Étape 1 – Identification de la version de base de données.

La plupart des distributions Linux modernes sont livrées avec MySQL ou MariaDB (une base de données de remplacement populaire totalement compatible avec MySQL). Selon la base de données utilisée et sa version, vous devrez utiliser différentes commandes pour récupérer le mot de passe root.

Comment vérifier votre version MySQL ou MariaDB ?

Il faut utiliser la commande suivante en ligne de commande SSH :

mysql–version
Output:
mysqld Ver 5.7.27-0ubuntu0.18.04.1 for Linux on x86_64

Ou une sortie comme celle-ci pour MariaDB :

mysqlVer 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Notez quelle base de données et quelle version vous avez, car vous allez les utiliser plus tard. Puis, vous devez arrêter la base de données pour pouvoir y accéder manuellement.

Étape 2 – Arrêt du serveur de base de données

Afin de modifier le mot de passe root, vous devez d’abord arrêter le serveur de base de données préalablement.

Vous pouvez le faire pour MySQL avec cette commande :

$ sudo systemctl stop mysql

Et pour MariaDB avec :

$ sudo systemctl stop mariadb

Une fois le serveur de base de données arrêté, vous y accéderez manuellement pour réinitialiser le mot de passe root.

Étape 3 — Redémarrage du serveur de base de données

Si vous exécutez MySQL et MariaDB sans charger d’informations concernant les privilèges utilisateurs, ce qui vous permettra d’accéder à la ligne de commande de la base de données avec les privilèges root sans fournir le mot de passe. Cela vous permettra d’accéder à la base de données sans le savoir.

Pour exécuter cette opération, vous devez empêcher la base de données de charger les tables de droits contenant les informations de privilège utilisateur. Pour des raisons de sécurité et les risques, vous devez également ignorer la mise en réseau afin d’empêcher d’autres clients de se connecter.

Démarrez la base de données sans chargement les tables de droits ni activer la mise en réseau avec cette commande :

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Le caractère (&)  à la fin de cette commande fera exécuter ce processus en arrière-plan afin que vous puissiez continuer à utiliser votre terminal.

Vous pouvez maintenant vous connecter à la base de données en tant qu’utilisateur root, qui ne demande pas de mot de passe.

$ mysql -u root

Vous verrez immédiatement une invite de shell de base de données.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

MariaDB :

Tapez «aide»; ou '\ h' pour obtenir de l'aide. Tapez «\ c» pour effacer l'instruction d'entrée actuelle.
MariaDB [(aucun)]>

Étape 4 – Modification du mot de passe root

Une façon simple de changement du mot de passe root pour les versions récentes de MySQL est d’utiliser la commande ALTER USER. Cependant, cette commande ne fonctionnera pas vu que les tables de droits d’accès ne sont pas chargées.

Demandons au serveur de base de données de recharger les tables de droits en exécutant la commande

mysql> FLUSH PRIVILEGES.

Maintenant, nous pouvons changer le mot de passe root.

Pour MySQL 5.7.6 plus récent ainsi que MariaDB 10.1.20 et plus récent, utilisez la commande suivante.

mysql> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'new_password';

Pour MySQL 5.7.5 et versions anciennes ainsi que MariaDB 10.1.20 et versions anciennes, utilisez:

mysql> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('new_password');

Assurez-vous de remplacer new_password par le nouveau mot de passe de votre choix

Remarque :

Si la commande ALTER UTILISATEUR ne fonctionne pas, cela signifie un dysfonctionnement. Cependant, vous pouvez essayer UPDATE … TAPER pour réinitialiser le mot de passe root.

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

Postérieurement, N’oubliez pas de recharger les tables de droits.

Dans les deux cas, vous devriez voir la confirmation montrant que  la commande a été exécutée avec succès.

Output :
Query OK, 0 rows affected (0.00 sec)

Le mot de passe a été modifié, vous pouvez donc arrêter l’instance manuelle du serveur de base de données et le redémarrer comme il l’était auparavant.

Étape 5 — Redémarrer le serveur de base de données

Premièrement, arrêtez l’instance du serveur de base de données que vous avez démarré manuellement à l’étape 3. Cette commande recherche le PID, ou l’identifiant (ID) de processus, MySQL ou MariaDB, et envoie SIGTERM pour provoquer sa fin après avoir effectué des opérations de nettoyage. Vous pouvez en savoir plus dans ce didacticiel de gestion des processus Linux.

Pour MySQL, utilisez :
$ sudo kill 'cat /var/run/mysqld/mysqld.pid'
Pour MariaDB, utilisez :
$ sudo kill '/var/run/mariadb/mariadb.pid'

Ensuite, redémarrez le service à l’aide de systemctl.

Pour MySQL, utilisez :
$ sudo systemctl start mysql
Pour MariaDB, utilisez :
$ sudo systemctl start mariadb

Vous pouvez maintenant confirmer que le nouveau mot de passe a été modifié correctement en exécutant :

$ mysql -u root–p

La commande devrait demander le mot de passe nouvellement attribué. Entrez-le, et vous devriez accéder à l’invite de la base de données comme prévu.

Conclusion.

Vous avez restauré le mot de passe. Assurez-vous que le nouveau mot de passe que vous choisissez est solide et sécurisé et le garder en lieu sûr.

Laisser un commentaire