Comment changer le mot de passe root de MySQL sur Linux ?

Publié 27 août 2024

Problème : Changer le mot de passe root MySQL sous Linux

Mettre à jour le mot de passe root MySQL sur un système Linux est important pour la sécurité de la base de données. Les administrateurs peuvent avoir besoin de changer ce mot de passe pour suivre les bonnes pratiques de sécurité ou répondre à d'éventuels problèmes de sécurité. Le processus peut être complexe pour ceux qui ne sont pas familiers avec l'interface en ligne de commande de MySQL ou l'administration système Linux.

Méthodes pour changer le mot de passe root MySQL

Méthode 1 : Utiliser la ligne de commande MySQL

Pour changer le mot de passe root MySQL en utilisant la ligne de commande :

  1. Démarrer MySQL en mode sans échec :

    • Arrêter le service MySQL : sudo systemctl stop mysql
    • Démarrer MySQL sans vérification des permissions : sudo mysqld_safe --skip-grant-tables &
  2. Réinitialiser le mot de passe root :

    • Se connecter à MySQL : mysql -u root
    • Sélectionner la base de données MySQL : USE mysql;
    • Mettre à jour le mot de passe root : ALTER USER 'root'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';
    • Actualiser les privilèges : FLUSH PRIVILEGES;
    • Quitter MySQL : EXIT;
  3. Redémarrer le service MySQL :

    • Arrêter l'instance en mode sans échec : sudo killall mysqld
    • Démarrer MySQL normalement : sudo systemctl start mysql

Méthode 2 : Modifier le fichier de configuration MySQL

Pour changer le mot de passe root en modifiant la configuration MySQL :

  1. Localiser et éditer le fichier my.cnf :

    • Trouver le fichier : sudo find /etc -name my.cnf
    • Éditer le fichier : sudo nano /etc/mysql/my.cnf
  2. Ajouter l'option skip-grant-tables :

    • Sous la section [mysqld], ajouter : skip-grant-tables
  3. Redémarrer MySQL et mettre à jour le mot de passe :

    • Redémarrer MySQL : sudo systemctl restart mysql
    • Se connecter à MySQL : mysql -u root
    • Mettre à jour le mot de passe : ALTER USER 'root'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';
    • Actualiser les privilèges : FLUSH PRIVILEGES;
    • Retirer l'option skip-grant-tables du fichier my.cnf
    • Redémarrer MySQL à nouveau : sudo systemctl restart mysql

Méthode 3 : Utiliser l'outil mysqladmin

L'outil mysqladmin offre un moyen simple de changer le mot de passe root MySQL :

  1. Syntaxe pour changer le mot de passe avec mysqladmin : mysqladmin -u root -p'ancien_mot_de_passe' password 'nouveau_mot_de_passe'

  2. Exemples d'utilisation de la commande mysqladmin :

    • Changer le mot de passe lorsque le mot de passe actuel est connu : mysqladmin -u root -p'mot_de_passe_actuel' password 'nouveau_mot_de_passe'
    • Changer le mot de passe sans mot de passe actuel (s'il n'est pas défini) : mysqladmin -u root password 'nouveau_mot_de_passe'

Remplacez 'ancien_mot_de_passe', 'mot_de_passe_actuel' et 'nouveau_mot_de_passe' par vos mots de passe réels.

Vérifier le nouveau mot de passe root MySQL

Après avoir changé votre mot de passe root MySQL, vous devriez vérifier si le nouveau mot de passe fonctionne. Voici comment procéder :

Se connecter avec le nouveau mot de passe :

  1. Ouvrez votre terminal ou invite de commande.
  2. Utilisez cette commande pour vous connecter à MySQL : mysql -u root -p
  3. Entrez votre nouveau mot de passe lorsque demandé.
  4. Si vous vous connectez, vous verrez l'invite MySQL.

Tester l'accès à la base de données :

  1. Une fois connecté, essayez d'accéder à une base de données : SHOW DATABASES;
  2. Cette commande devrait afficher une liste des bases de données.
  3. Essayez de créer une nouvelle base de données : CREATE DATABASE test_db;
  4. Si cela fonctionne, vous verrez un message confirmant la création de la base de données.
  5. Vous pouvez ensuite supprimer la base de données de test : DROP DATABASE test_db;

Si vous pouvez effectuer ces actions sans erreurs, cela signifie que votre nouveau mot de passe root fonctionne et que vous pouvez gérer votre serveur MySQL.

Résolution des problèmes courants

Mot de passe root oublié

Si vous avez oublié votre mot de passe root MySQL, vous pouvez le réinitialiser en suivant ces étapes :

  1. Arrêter le service MySQL : sudo systemctl stop mysql

  2. Démarrer MySQL en mode sans échec : sudo mysqld_safe --skip-grant-tables &

  3. Se connecter à MySQL sans mot de passe : mysql -u root

  4. Sélectionner la base de données MySQL : USE mysql;

  5. Réinitialiser le mot de passe root : ALTER USER 'root'@'localhost' IDENTIFIED BY 'nouveau_mot_de_passe';

  6. Appliquer les changements : FLUSH PRIVILEGES;

  7. Quitter MySQL : EXIT;

  8. Arrêter l'instance en mode sans échec : sudo killall mysqld

  9. Redémarrer MySQL : sudo systemctl start mysql

Remplacez 'nouveau_mot_de_passe' par votre nouveau mot de passe.

Erreurs de permission refusée

Si vous obtenez des erreurs de permission refusée après avoir changé votre mot de passe, essayez ces solutions :

  1. Vérifier les privilèges de votre utilisateur MySQL :

    • Connectez-vous à MySQL en tant que root
    • Exécutez : SHOW GRANTS FOR 'votre_nom_utilisateur'@'localhost';
    • Assurez-vous d'avoir les permissions nécessaires
  2. Mettre à jour les privilèges de l'utilisateur si nécessaire :

    • Utilisez : GRANT ALL PRIVILEGES ON *.* TO 'votre_nom_utilisateur'@'localhost';
    • Puis : FLUSH PRIVILEGES;
  3. Vérifier le fichier de configuration MySQL :

    • Examinez /etc/mysql/my.cnf ou /etc/my.cnf
    • Assurez-vous qu'il n'y a pas de paramètres conflictuels
  4. Redémarrer le service MySQL : sudo systemctl restart mysql

  5. Vérifier les permissions des fichiers système :

    • Vérifiez que les permissions du répertoire de données MySQL sont correctes
    • Généralement : chown -R mysql:mysql /var/lib/mysql

Si les problèmes persistent, consultez les journaux d'erreurs MySQL pour plus d'informations.