Comment réinitialiser votre mot de passe root MySQL ou MariaDB

introduction

Oublier les mots de passe arrive au meilleur de nous. Si vous oubliez ou perdez le mot de passe root de votre base de données MySQL ou MariaDB, vous pouvez toujours y accéder et réinitialiser le mot de passe si vous avez accès au serveur et à un compte utilisateur activé poursudo.

Ce didacticiel explique comment réinitialiser le mot de passe root pour les versions plus anciennes et plus récentes de MySQL et MariaDB.

Conditions préalables

Pour récupérer votre mot de passe root MySQL / MariaDB, vous aurez besoin des éléments suivants:

  • Accès au serveur Linux exécutant MySQL ou MariaDB avec un utilisateur sudo.

[[step-1 -—- authentication-the-database-version]] == Étape 1 - Identification de la version de la base de données

La plupart des distributions Linux modernes sont livrées avec MySQL ou MariaDB, un substitut populaire parfaitement 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.

Vous pouvez vérifier votre version avec la commande suivante:

mysql --version

Vous verrez des résultats comme celui-ci avec MySQL:

MySQL outputmysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Ou une sortie comme celle-ci pour MariaDB:

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

Notez la base de données et la version que vous utilisez, car vous les utiliserez plus tard. Ensuite, vous devez arrêter la base de données pour pouvoir y accéder manuellement.

[[step-2 -—- stop-the-database-server]] == Étape 2 - Arrêt du serveur de base de données

Pour changer le mot de passe root, vous devez au préalable arrêter le serveur de base de données.

Vous pouvez le faire pour MySQL avec:

sudo systemctl stop mysql

Et pour MariaDB avec:

sudo systemctl stop mariadb

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

[[step-3 -—- restarting-the-database-server-without-permission-checking]] == Étape 3 - Redémarrage du serveur de base de données sans vérification des autorisations

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

Pour ce faire, vous devez empêcher la base de données de charger lesgrant tables, qui stockent les informations de privilège utilisateur. Comme il s’agit là d’un risque pour la sécurité, 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 charger les tables de subventions ni activer la mise en réseau:

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

L'esperluette à la fin de cette commande fera en sorte que ce processus s'exécute 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, ce qui ne devrait pas vous demander de mot de passe.

mysql -u root

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

MySQL invite

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MariaDB invite

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Maintenant que vous avez un accès root, vous pouvez changer le mot de passe root.

[[step-4 -—- change-the-root-password]] == Étape 4 - Changement du mot de passe root

Un moyen simple de changer le mot de passe root pour les versions modernes de MySQL consiste à utiliser la commandeALTER USER. Cependant, cette commande ne fonctionnera pas pour l'instant car les tables de droits ne sont pas chargées.

Disons au serveur de base de données de recharger les tables d'octroi en exécutant la commandeFLUSH PRIVILEGES.

FLUSH PRIVILEGES;

Maintenant, nous pouvons réellement changer le mot de passe root.

PourMySQL 5.7.6 and newer ainsi queMariaDB 10.1.20 and newer, utilisez la commande suivante.

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

PourMySQL 5.7.5 and older ainsi queMariaDB 10.1.20 et plus, utilisez:

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

Assurez-vous de remplacernew_password par le nouveau mot de passe de votre choix.

[.Remarque]##

Note: si la commandeALTER USER ne fonctionne pas, cela indique généralement un problème plus grave. Cependant, vous pouvez essayerUPDATE ... SET pour réinitialiser le mot de passe root à la place.

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

N'oubliez pas de recharger les tables de droits après cela.

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

OutputQuery OK, 0 rows affected (0.00 sec)

Le mot de passe a été modifié. Vous pouvez donc maintenant arrêter l'instance manuelle du serveur de base de données et la redémarrer comme auparavant.

[[step-5 -—- restart-the-database-server-normalement]] == Étape 5 - Redémarrez normalement le serveur de base de données

Tout d’abord, arrêtez l’instance du serveur de base de données que vous avez démarrée manuellement à l’étape 3. Cette commande recherche le PID, ou l'ID de processus, du processus MySQL ou MariaDB et envoieSIGTERM pour lui dire de quitter en douceur après avoir effectué les opérations de nettoyage. Vous pouvez en savoir plus dansthis Linux process management tutorial.

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 en utilisantsystemctl.

Pour MySQL, utilisez:

sudo systemctl start mysql

Pour MariaDB, utilisez:

sudo systemctl start mariadb

Vous pouvez maintenant vérifier que le nouveau mot de passe a été appliqué correctement en exécutant:

mysql -u root -p

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

Conclusion

Vous avez maintenant un accès administratif au serveur MySQL ou MariaDB restauré. Assurez-vous que le nouveau mot de passe root que vous choisissez est fort et sécurisé et conservez-le en lieu sûr.

Related