2009-11-01 9 views

Répondre

1

Vous pourriez encore être en mesure de faire une UPDATE sur la table user dans la base mysql:

USE mysql; 
UPDATE user SET Grant_priv='1' WHERE User='root'; 
FLUSH PRIVILEGES; 

Si l'étape 3 ne fonctionne pas, le redémarrage du serveur MySQL aura le même effet. Si l'étape 2 ne fonctionne pas, vous devez restaurer mysql.user à partir de la sauvegarde. Si vous n'avez pas de sauvegarde, faites une sauvegarde, réinstallez MySQL, puis restaurez de manière sélective votre sauvegarde, en omettant les tables dans la base de données mysql.

MISE À JOUR

Vous obtenez Accès refusé lors de la première étape. À ce stade, vous êtes aux solutions alternatives avec des sauvegardes. Il n'y a aucun moyen (que je sache ou que je puisse facilement imaginer) que vous récupériez ces tables autrement.

MISE À JOUR 2

Le message d'erreur exact revient à dire que, en plus de perdre grant privilèges de root, vous avez laissé tomber l'accès root à la mysql DB. Sans avoir accès à cette base de données et sans avoir les privilèges grant, la seule façon dont je peux voir en arrière est d'obtenir en quelque sorte une nouvelle copie de la base de données mysql.

Y a-t-il une chance que vous ayez configuré un esclave de réplication?

+0

Accès refusé lors de la première étape. – LogicWolfe

+0

Dans le cas où le message d'erreur exact est en quelque sorte plus utile: ERREUR 1044 (42000): Accès refusé pour l'utilisateur 'root' @ 'localhost' à la base de données 'mysql' – LogicWolfe

+0

Vous avez obtenu cela en utilisant temporairement --skip-grant-tables pour mysqld. Une fois cela fait, l'octroi des privilèges a bien fonctionné. http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html contient des informations sur les autres utilisateurs susceptibles de rencontrer le même problème. – LogicWolfe