Comment vérifier, modifier et réinitialiser le mot de passe root de MySQL (Guide complet pour les débutants)

目次

1. Comment vérifier le mot de passe root MySQL

Le mot de passe root de MySQL est un élément crucial dans la gestion des bases de données. Cependant, surtout pour les débutants, vous pouvez vous demander « Je ne connais pas le mot de passe », ou « Où puis‑je trouver le mot de passe initial ? ». Dans cette section, nous expliquerons des méthodes spécifiques pour vérifier le mot de passe root de MySQL.

Comment vérifier le mot de passe initial

Dans MySQL 5.7 et versions ultérieures, un mot de passe initial pour l’utilisateur root est automatiquement généré et enregistré dans le fichier journal lors de l’installation. Suivez les étapes ci‑dessous pour vérifier ce mot de passe temporaire.

Étapes

  1. Ouvrez un terminal (ou l’invite de commandes) pour vérifier le fichier journal de MySQL.
  2. Exécutez la commande suivante :
    sudo grep 'temporary password' /var/log/mysqld.log
    
  1. La sortie contiendra quelque chose de similaire à ce qui suit :
    [Note] A temporary password is generated for root@localhost: EaGapdplN0*m
    
  1. Dans ce cas, EaGapdplN0*m est le mot de passe initial pour l’utilisateur root.

Remarques importantes

  • Le mot de passe temporaire ne peut être utilisé qu’une seule fois. Après vous être connecté, vous devez le changer immédiatement.
  • Si le fichier journal est introuvable ou si vous rencontrez une erreur de permission, exécutez la commande avec des privilèges administratifs.

Comment vérifier le mot de passe actuel

Pour des raisons de sécurité, MySQL ne fournit aucune commande ou méthode permettant de visualiser directement un mot de passe root existant. Si vous ne connaissez pas le mot de passe actuel, consultez la section « Que faire si vous avez oublié le mot de passe root » et envisagez de le réinitialiser.

2. Comment changer le mot de passe root MySQL

Changer régulièrement le mot de passe root de MySQL est important pour maintenir la sécurité. Dans cette section, nous expliquerons en détail comment changer le mot de passe en utilisant les identifiants root actuels.

Étapes de base pour changer le mot de passe

Suivez ces étapes pour vous connecter à MySQL et définir un nouveau mot de passe.

Étapes

  1. Ouvrez un terminal ou l’invite de commandes et saisissez la commande suivante pour vous connecter à MySQL :
    mysql -u root -p
    
  • -u root indique que le nom d’utilisateur est root.
  • -p vous invite à saisir le mot de passe lors de la connexion.
  1. Exécutez la commande SQL suivante pour changer le mot de passe :
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Rechargez les informations de privilèges en exécutant :
    FLUSH PRIVILEGES;
    
  1. Après avoir exécuté les commandes avec succès, déconnectez‑vous de MySQL :
    exit
    

Remarques importantes

  • Utilisez un mot de passe fort
  • Nous recommandons que votre nouveau mot de passe inclue les éléments suivants : Exemple : MyS3cure!2025
    • Lettres majuscules et minuscules
    • Chiffres
    • Symboles (par ex., @, #, $, !)
    • Au moins 12 caractères
  • Soyez conscient des sessions actives
  • Si vous changez le mot de passe pendant une session MySQL, il se peut que vous deviez vous reconnecter.
  • Vérifiez les privilèges de l’utilisateur
  • Assurez‑vous que l’utilisateur root possède les privilèges appropriés. Si vous ne pouvez pas changer le mot de passe, contactez votre administrateur système.

Problèmes courants lors du changement du mot de passe

Impossible de se connecter après avoir changé le mot de passe

  • Cause : Vous n’avez peut‑être pas exécuté la commande FLUSH PRIVILEGES.
  • Solution : Connectez‑vous de nouveau et exécutez FLUSH PRIVILEGES;.

Le nouveau mot de passe ne respecte pas les exigences de la politique de sécurité

  • Cause : MySQL peut avoir une politique de mot de passe stricte activée.
  • Solution : Définissez un mot de passe plus fort ou ajustez les paramètres de la politique si nécessaire.

3. Que faire si vous avez oublié le mot de passe root

Si vous oubliez le mot de passe root de MySQL, vous ne pourrez pas accéder à la base de données avec les méthodes de connexion normales. Cependant, en désactivant temporairement le système d’authentification de MySQL, vous pouvez réinitialiser le mot de passe. Dans cette section, nous expliquons les étapes détaillées.

Étapes pour réinitialiser le mot de passe root

1. Arrêter le service MySQL

Tout d’abord, arrêtez le service MySQL pour mettre temporairement la base de données hors ligne. Utilisez la commande suivante :

sudo systemctl stop mysqld
  • Si la commande s’exécute avec succès, le service MySQL s’arrêtera.

2. Démarrer MySQL avec l’authentification désactivée

Démarrez MySQL avec l’option --skip-grant-tables pour désactiver l’authentification.

sudo mysqld_safe --skip-grant-tables &
  • Cette commande démarre MySQL sans appliquer l’authentification.
  • Important : Étant donné que la sécurité est considérablement réduite dans ce mode, assurez-vous qu’aucun autre utilisateur ne puisse accéder au système pendant l’exécution de cette opération.

3. Réinitialiser le mot de passe root

Connectez-vous à MySQL pendant que l’authentification est désactivée et réinitialisez le mot de passe.

  1. Connectez-vous à MySQL :
    mysql -u root
    
  1. Définissez un nouveau mot de passe root avec la commande suivante :
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    
  1. Rechargez les informations de privilèges :
    FLUSH PRIVILEGES;
    
  1. Après avoir terminé, déconnectez-vous de MySQL :
    exit
    

4. Redémarrer le service MySQL

Redémarrez le service MySQL pour réactiver l’authentification normale :

sudo systemctl restart mysqld

Après le redémarrage, connectez-vous à MySQL en utilisant le mot de passe récemment défini.

Notes importantes

  • Maintenir la sécurité
  • Lors de l’utilisation de l’option --skip-grant-tables, MySQL est complètement non protégé. Effectuez cette tâche rapidement et évitez les risques inutiles.
  • Impact sur les autres utilisateurs
  • Cette méthode est destinée au compte root. Assurez-vous que les autres utilisateurs ne soient pas affectés.

Dépannage

Commande mysqld_safe introuvable

  • Cause : Sur certaines distributions Linux, mysqld_safe peut ne pas être installé.
  • Solution : Démarrez MySQL directement en utilisant :
    sudo mysqld --skip-grant-tables &
    

Toujours impossible de se connecter après la réinitialisation du mot de passe

  • Cause : MySQL n’a peut-être pas rechargé les informations de privilèges mises à jour.
  • Solution : Connectez-vous de nouveau et exécutez FLUSH PRIVILEGES; .

4. Bonnes pratiques pour renforcer la sécurité de MySQL

Gérer correctement le mot de passe root de MySQL est important, mais cela ne suffit pas à lui seul. Pour exploiter une base de données en toute sécurité, des mesures de sécurité supplémentaires doivent être mises en place. Cette section présente des méthodes pratiques pour renforcer la sécurité de MySQL.

Définir un mot de passe fort

La sécurité de la base de données dépend fortement de la robustesse du mot de passe. Suivez ces directives lors de la création d’un mot de passe fort.

Directives de création de mot de passe

  • Longueur : Au moins 12 caractères
  • Types de caractères : Une combinaison de lettres majuscules, lettres minuscules, chiffres et symboles
  • Exemple : 2#SecureMySQL_2025!

Appliquer les politiques de sécurité

MySQL vous permet de configurer des politiques de validation des mots de passe. Utilisez la commande suivante pour vérifier la politique actuelle :

SHOW VARIABLES LIKE 'validate_password%';

Si nécessaire, modifiez la politique comme suit :

SET GLOBAL validate_password_policy = 'MEDIUM';
SET GLOBAL validate_password_length = 12;

Supprimer les comptes et données inutiles

Vérifier et supprimer les comptes inutiles

Lors de l’installation, MySQL peut créer des comptes de test par défaut ou des utilisateurs anonymes. Ceux-ci peuvent représenter des risques de sécurité et doivent être supprimés s’ils ne sont pas nécessaires.

  1. Vérifiez la liste actuelle des utilisateurs :
    SELECT user, host FROM mysql.user;
    
  1. Supprimez les utilisateurs inutiles :
    DROP USER 'username'@'hostname';
    

Supprimer la base de données de test

Supprimez la base de données de test créée lors de l’installation :

DROP DATABASE test;

Restreindre l’accès au compte root

Limiter l’accès au compte root renforce la sécurité.

Restreindre à l’accès local uniquement

Par défaut, le compte root peut autoriser les connexions à distance. Restreignez-le à un accès local uniquement :

UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
FLUSH PRIVILEGES;

Créer un compte administratif séparé

Au lieu d’utiliser directement le compte root, il est recommandé de créer un compte administratif dédié pour des tâches spécifiques.

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongAdminPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;

Appliquer le principe du moindre privilège

Améliorez la sécurité en accordant à chaque utilisateur uniquement les privilèges minimaux nécessaires.

Vérifier les privilèges existants

SHOW GRANTS FOR 'username'@'hostname';

Révoquer les privilèges inutiles

REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'hostname';

Automatiser la configuration de sécurité MySQL

MySQL fournit la commande mysql_secure_installation pour simplifier la configuration de sécurité. L’exécution de cette commande vous permet de :

  • Supprimer les comptes et bases de données de test
  • Désactiver la connexion root à distance
  • Appliquer les politiques de sécurité

Commande d’exécution

sudo mysql_secure_installation

Effectuer des sauvegardes régulières

Dans le cadre du renforcement de la sécurité, des sauvegardes régulières de la base de données sont fortement recommandées. Cela garantit que vous pouvez restaurer les données en cas de problèmes imprévus.

Exemples de sauvegarde

  1. Sauvegarder toutes les bases de données :
    mysqldump -u root -p --all-databases > backup.sql
    
  1. Sauvegarder une base de données spécifique :
    mysqldump -u root -p database_name > database_name_backup.sql
    

5. Questions fréquemment posées (FAQ)

Voici ci-dessous des questions fréquemment posées et leurs réponses concernant la gestion du mot de passe root MySQL et la configuration de sécurité. Utilisez cette section pour le dépannage et la résolution de préoccupations supplémentaires.

Q1. Je ne peux pas trouver le mot de passe initial MySQL dans le journal. Que dois-je faire ?

A1 :
Dans MySQL 5.7 et versions ultérieures, le mot de passe initial est enregistré dans le fichier journal (généralement /var/log/mysqld.log). Cependant, si le fichier journal ne peut pas être trouvé ou a été supprimé, essayez ce qui suit :

  1. Réinstaller MySQL générera un nouveau mot de passe temporaire.
  2. Si vous ne pouvez toujours pas vous connecter, reportez-vous à « Que faire si vous avez oublié le mot de passe root » et réinitialisez le mot de passe.

Q2. Les utilisateurs autres que root peuvent-ils changer leurs mots de passe en utilisant la même procédure ?

A2 :
Oui, les utilisateurs autres que root peuvent changer leurs mots de passe en utilisant la même méthode. Cependant, des privilèges administratifs pour cet utilisateur sont requis. Utilisez la commande suivante :

ALTER USER 'username'@'hostname' IDENTIFIED BY 'NewStrongPassword';

Q3. La commande mysqld_safe n’est pas trouvée. Que dois-je faire ?

A3 :
Sur certaines distributions Linux, mysqld_safe peut ne pas être installé. Dans ce cas, vous pouvez démarrer MySQL avec l’option --skip-grant-tables en utilisant la commande mysqld :

sudo mysqld --skip-grant-tables &

Cependant, comme cela désactive l’authentification, les mêmes précautions de sécurité s’appliquent.

Q4. J’ai changé le mot de passe mais je ne peux toujours pas me connecter. Pourquoi ?

A4 :
Les causes possibles incluent les suivantes :

  1. Les informations de privilège n’ont pas été mises à jour : Après avoir changé le mot de passe, exécutez la commande suivante pour actualiser les privilèges :
    FLUSH PRIVILEGES;
    
  1. Erreur de frappe : Assurez-vous que les lettres majuscules, minuscules et caractères spéciaux du nouveau mot de passe sont saisis correctement.
  2. Restrictions de politique de mot de passe : MySQL peut rejeter les mots de passe faibles en fonction de sa politique de sécurité. Vérifiez les paramètres de la politique et utilisez un mot de passe plus fort.

Q5. Y a-t-il un moyen de renforcer la sécurité MySQL en une seule fois ?

A5 :
Pour configurer efficacement les paramètres de sécurité MySQL, il est recommandé d’utiliser la commande mysql_secure_installation. Cette commande effectue automatiquement les opérations suivantes :

  • Supprime les utilisateurs et bases de données de test
  • Désactive la connexion root à distance
  • Applique une politique de mot de passe forte

Exécutez la commande comme suit :

sudo mysql_secure_installation

Q6. La gestion des mots de passe diffère-t-elle en fonction de la version de MySQL ?

A6 :
Oui, la méthode de gestion du mot de passe root peut différer en fonction de la version de MySQL. Les principales différences sont :

  • MySQL 5.7 et versions ultérieures : Un mot de passe temporaire est généré automatiquement et enregistré dans le fichier journal.
  • MySQL 5.6 et versions antérieures : Le mot de passe initial peut être vide (aucun mot de passe défini).

Pour vérifier votre version de MySQL, utilisez la commande suivante :

mysql --version

Q7. Comment puis-je autoriser les connexions à distance pour l’utilisateur root ?

A7:
Pour des raisons de sécurité, l’accès root à distance n’est pas recommandé. Cependant, si nécessaire, vous pouvez l’activer avec les commandes suivantes :

  1. Autoriser l’accès à distance :
    UPDATE mysql.user SET host = '%' WHERE user = 'root';
    
  1. Recharger les informations de privilèges :
    FLUSH PRIVILEGES;
    

Important :
Si vous autorisez l’accès à distance, assurez-vous de mettre en place des mesures de sécurité supplémentaires telles que des règles de pare-feu et des restrictions d’IP.

Q8. Pouvez-vous expliquer brièvement les étapes pour réinitialiser le mot de passe root ?

A8:

  1. Arrêter le service MySQL :
    sudo systemctl stop mysqld
    
  1. Démarrer MySQL avec l’authentification désactivée :
    sudo mysqld_safe --skip-grant-tables &
    
  1. Réinitialiser le mot de passe :
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';
    FLUSH PRIVILEGES;
    
  1. Redémarrer le service MySQL :
    sudo systemctl restart mysqld