Si vous ne pouvez pas accéder au serveur mysql en tant que root, vous devez supprimer ou ne pouvez pas restaurer tous les enregistrements racine dans la table mysql.user, supprimez-les tous et ajoutez un nouvel enregistrement.
Vous devez utiliser la fonction mysql PASSWORD() pour hacher votre mot de passe en clair. vérifier pour plus d'informations http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
Arrêtez d'abord le serveur mysql et lancez mysqld avec --skip-grant-tables.
[[email protected] ~]# service mysqld stop; mysqld_safe --skip-grant-tables &
Découpez votre mot de passe en clair.
mysql> select PASSWORD('CLEARTEXT_PASSWORD');
+-------------------------------------------+
| PASSWORD('CLEARTEXT_PASSWORD') |
+-------------------------------------------+
| *1EADAEB11872E413816FE51216C9134766DF39F9 |
+-------------------------------------------+
1 row in set (0.00 sec)
Utilisez la base de données mysql pour appliquer les modifications.
mysql> use mysql;
Supprimer tous les enregistrements racine
mysql> delete from user where User='root';
Ajouter un nouvel enregistrement que l'utilisateur root peut accéder à tous les privilèges de votre adresse IP.
mysql> insert into `user` VALUES('YOUR_IP_ADDRESS','root','*1EADAEB11872E413816FE51216C9134766DF39F9','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
Flush changes.
mysql> FLUSH PRIVILEGES;
Quittez la ligne de commande mysql.
mysql> exit;
Redémarrez le service mysqld. Si vous exécutez ces commandes/requêtes mysql, vous obtiendrez un nouvel accès au serveur mysql. Si vous exécutez cette commande/requête mysql, vous obtiendrez un nouvel accès au serveur mysql.
Il semble y avoir une solution à cette question/réponse http://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-users-full-privileges –