MySQL : Réinitialisation du mot de passe administrateur (root)

Comment ré initialiser le mot de passe administrateur (root) de MySQL ?

En cas de perte du mot de passe root de MySQL, vous pourrez le ré-initialiser en démarrant MySQL en mode « safe » puis en changeant le mot de passe administrateur directement dans la table « user » de la base « mysql ».

  • Commencez par arrêter le service MySQL :
    root@eeepc:~# whoami 
    root
    root@eeepc:~# /etc/init.d/mysql stop
    Stopping MySQL database server: mysqld.
  • Relancez le démon en mode sécurisé via « mysqld_safe » sans charger la table des droits (option « –skip-grant-tables ») :

    root@eeepc:~# mysqld_safe --skip-grant-tables &
    [1] 3633
    root@eeepc:~# 101202 00:02:45 mysqld_safe Logging to syslog.
    101202 00:02:45 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

    ATTENTION : Vos bases de données sont accessibles A TOUS SANS AUCUNE PROTECTION à partir de ce moment !!!

  • Connectez vous au SGBD (Système de Gestion de Base de Données) MySQL en tant que root et sélectionnez la base de données « mysql » :

    root@eeepc:~# mysql -u root mysql
    ...
    mysql> show tables ;
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    ...
    | user                      |
    +---------------------------+
    23 rows in set (0.00 sec)
  • L’objectif est désormais de remplacer, dans la table « user », toutes les occurrences cryptées du mot de passe associé à « root ». Pour cela nous utiliserons un simple « update » :

    mysql> update user set password=PASSWORD("new_mdp") where User='root';
    Query OK, 3 rows affected (0.00 sec)
    Rows matched: 3  Changed: 3  Warnings: 0

    la fonction « PASSWORD » se chargera du cryptage de la chaîne de caractères que vous lui passerez en argument.

    Comme toujours, tous changements de droits nécessite un rechargement des privilèges :

    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
  • Dernière chose à faire : re-démarrer MySQL en mode normal.
    mysql> exit
    Bye
    root@eeepc:~# killall mysqld
    101202 01:08:49 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
     
    [1]+  Done                    mysqld_safe --skip-grant-tables
    root@eeepc:~# /etc/init.d/mysql start
    Starting MySQL database server: mysqld.

Vous pouvez désormais vous connecter à MySQL en « root » en utilisant le mot de passe que vous venez de définir.

Une réflexion au sujet de « MySQL : Réinitialisation du mot de passe administrateur (root) »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *