ERREUR 1044 (42000): Accès refusé pour l' 'root' Avec Tous les Privilèges
J'ai l'étrange erreur. Je suis connecté en local Mysql en tant que root via la ligne de commande. Après la création de la base de données:
create database some_db;
Alors d'accorder des privilèges à certains utilisateur:
grant all privileges on some_db.* to some_user@'localhost' identified by 'password';
C'est de donner de l'erreur:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'
Les autorisations pour la racine(montrer subventions;) montre:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'
Je suis également faire en sorte que je suis connecté en tant que root:
select current_user();
Et cela confirme que je suis connecté en tant que 'root'@'localhost'
J'ai créé la base de données et un utilisateur assigné à plusieurs reprises et n'a jamais eu un problème. Pourquoi je suis incapable d'assigner l'utilisateur de la base de données créée par la racine tout en étant connecté en tant que root?
p.s. d'autres posts, je pense que le problème peut être dû à une étrange utilisateurs
select host, user from mysql.user;
Certains utilisateurs que je n'ai pas ajouté, mais ne présentent:
MY_COMPuTER_name.local | ''
MY_COMPuTER_name.local | root
J'ai essayé de supprimer ces utilisateurs
drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';
Pourtant, alors que les états de l'exécution de la requête réussie, les utilisateurs ne sont pas supprimés, même après flush privileges. Pourquoi je suis incapable de supprimer des utilisateurs? Toute aide est très appricated
- Vous n'avez pas cité le nom d'utilisateur de la première
GRANT
déclaration - vous semblez être à côté de la
GRANT OPTION
. Par exemple, la racine de mesSHOW GRANTS
dit:GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY ... WITH GRANT OPTION
. La dernière partie est un peu important pour être en mesure d'ACCORDER des privilèges 😉 - Merci pour les suggestions. Peut-être, ceux qui sont bons, mais pas exactement nécessaire et ça ne résout pas le problème. Merci encore
- Comme @Phil et @ Wrikken indiquer, puis "subvention" est un cas particulier qui n'EST PAS INCLUS dans le "TOUS les PRIVILÈGES" de la clause.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, Identifier l'utilisateur que vous êtes connecté en tant que:
Le résultat de la première commande est ce que vous avez tenté de vous connecter en tant que, la deuxième est ce que vous avez réellement connecté tant que. Vérifiez que vous êtes connecté en tant que
root@localhost
dans mysql.Grant_priv
àroot@localhost
. Voici comment vous pouvez vérifier.Vous pouvez voir que le Grant_priv est définie sur N pour root@localhost. Ce doit être Y. ci-Dessous est de savoir comment fixe, ce:
J'ai ouvert une session, il était bien.
Si vous obtenez une erreur 1044 (42000) lorsque vous essayez d'exécuter des commandes SQL dans MySQL (qui a installé le long de serveur XAMPP) invite de cmd, alors voici la solution:
Fermer votre invite de commande MySQL.
Ouvrez votre invite de cmd (à partir du menu Démarrer -> exécuter -> cmd) qui indiquera: C:\Users\User>_
Aller à MySQL.exe en Tapant les commandes suivantes:
C:\Users\User>cd\
C:\>cd xampp
C:\xampp>cd mysql
C:\xxampp\mysql>cd bin
C:\xampp\mysql\bin>mysql -u root
Maintenant, essayez de créer une nouvelle base de données en tapant:
si elle montre:
Alors bravo ! Vous êtes bon pour aller...
La raison pour laquelle je ne pouvais pas supprimer certains des utilisateurs par l'intermédiaire de "drop" déclaration a été qu'il y a un bug dans Mysql http://bugs.mysql.com/bug.php?id=62255 avec le nom d'hôte contenant des lettres majuscules et minuscules. La solution a été de course requête suivante:
Je suis encore à essayer de comprendre l'autre question, où la racine de l'utilisateur avec toutes les autorisations sont pas en mesure d'accorder des privilèges à un nouvel utilisateur de base de données particulière