Récupération du mot de passe MySQL/MariaDB oublié

Lorsqu’un administrateur oublie le mot de passe d’un serveur MySQL ou MariaDB, il est possible de récupérer l’accès en suivant une procédure sécurisée. Cette méthode consiste à désactiver temporairement les contrôles d’autorisation afin de modifier directement les informations d’identification dans la base système.

Le processus décrit ici s’applique à MariaDB 5.5 sur CentOS 7.5, mais reste applicable à de nombreuses versions de MySQL et MariaDB.

Étape 1 : Désactiver les tables de gestion des privilèges

Modifier le fichier de configuration du serveur pour ajouter l’option skip-grant-tables, qui permet de se connecter sans authentification.

[mysqld]
skip-grant-tables

Ce paramètre doit être ajouté dans /etc/my.cnf.d/server.cnf, sous la section [mysqld].

Étape 2 : Redémarrer le service MariaDB

systemctl restart mariadb

Étape 3 : Se connecter sans mot de passe

Une fois le redémarrage effectué, il est désormais possible de se connecter en tant qu’utilisateur root sans fournir de mot de pase :

mysql -uroot

La connexion s’établit immédiatement, avec un accès complet au système.

Étape 4 : Mettre à jour le mot de passe via une requête directe

Les commandes classiques comme GRANT ou SET PASSWORD ne fonctionnent pas danns ce mode, car elles sont bloquées par l’option --skip-grant-tables. Il faut donc utiliser une requête SQL directe sur la table user du schéma système mysql.

USE mysql;

UPDATE user 
SET password = PASSWORD('nouveau_mot_de_passe') 
WHERE user = 'root';

Cette commande met à jour le mot de passe pour l’utilisateur root sur l’hôte localhost. Le nombre de lignes affectées indique combien d’enregistrements ont été modifiés.

Étape 5 : Supprimer l’option de configuraton

Après la modification du mot de passe, il est crucial de retirer l’option skip-grant-tables du fichier de configuration pour rétablir la sécurité du système.

Ouvrir le fichier :

vim /etc/my.cnf.d/server.cnf

Et commenter ou supprimer la ligne :

# skip-grant-tables

Étape 6 : Redémarrer le service

systemctl restart mariadb

Étape 7 : Vérifier la connexion avec le nouveau mot de passe

Tenter de se connecter sans mot de passe échoue maintenant, comme prévu :

mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Se connecter avec le nouveau mot de passe fonctionne correctement :

mysql -uroot -p'nouveau_mot_de_passe'

Une fois connecté, le système fonctionne normalement avec les contrôles d’authentification activés.

Étiquettes: MariaDB MySQL security database-administration root-password-reset

Publié le 7 septembre à 00h54