mysql oublie qui est enregistré dans: command denied to user "@'%'
De course show grants;
indique que je suis connecté en tant qu'utilisateur avec tous les privilèges sur une base de données.
De course show table status;
entraîne une erreur. Et l'erreur ne peut pas afficher le nom d'utilisateur que je suis connecté en tant qu'!
C'est comme si, pour cette commande, mysql oublie qui je suis. D'autres instructions select, beau travail. Quelqu'un peut-il expliquer cela? Comment réparer? Merci.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.13-log Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show grants;
+---------------------------------------------------------------------------------------------------------------------+
| Grants for php@localhost |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'php'@'localhost' IDENTIFIED BY PASSWORD '*8F5FF90079BC601F8EA7C148475658E65A0C029D' |
| GRANT ALL PRIVILEGES ON `sunflower_work`.* TO 'php'@'localhost' |
| GRANT ALL PRIVILEGES ON `news_demo`.* TO 'php'@'localhost' |
| GRANT ALL PRIVILEGES ON `news_base`.* TO 'php'@'localhost' |
+---------------------------------------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
mysql> show table status from sunflower_work;
ERROR 1143 (42000): SELECT command denied to user ''@'%' for column 'uid' in table 'users'
mysql>
mise à jour... comme suggéré par Tomalak, j'ai supprimé l'utilisateur et recréé avec fuller privilèges et aucun mot de passe. Toujours le problème persiste. Maintenant, il ressemble à ceci:
mysql> show grants;
+--------------------------------------------------+
| Grants for php@localhost |
+--------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'php'@'localhost' |
+--------------------------------------------------+
1 row in set (0.00 sec)
mysql> show table status;
ERROR 1143 (42000): SELECT command denied to user ''@'%' for column 'uid' in table 'users'
mysql>
Il peut y avoir deux problèmes: un mauvais message d'erreur douteuses et les privilèges. Pour résoudre ce problème, pouvez-vous supprimer tous les
geret'kal: Si vous google le message d'erreur, vous sauriez que les 1143 est une faute, c'est 1142 comme l'16+ d'autres questions...
Si vous vous donnez la peine de chercher, vous verrez que 1142 ne contient pas d'informations d'une colonne, tandis que 1143. Pourquoi les OP ont fait une faute de frappe dans un ouvertement copié/collé de sortie?
geret'kal: fixer Ensuite le reste 😉
Ce "reste"?
GRANT
s et re-ajouter seulement le premier, pas à l'aide de IDENTIFIED BY
(laisser à l'utilisateur d'enregistrer contenir le mot de passe)? Je me demande si il y a un conflit dans la liste.geret'kal: Si vous google le message d'erreur, vous sauriez que les 1143 est une faute, c'est 1142 comme l'16+ d'autres questions...
Si vous vous donnez la peine de chercher, vous verrez que 1142 ne contient pas d'informations d'une colonne, tandis que 1143. Pourquoi les OP ont fait une faute de frappe dans un ouvertement copié/collé de sortie?
geret'kal: fixer Ensuite le reste 😉
Ce "reste"?
OriginalL'auteur Dave Cohen | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
Le problème est probablement que vous avez VUES dans votre base de données. Les vues sont probablement créés avec des droits spécifiques.
Comme vous pouvez le dire par votre message d'erreur, il se plaint d'un différents utilisateur que celui auquel vous êtes connecté est. C'est parce que d'un point de vue, vous pouvez spécifier la façon de déterminer quels sont les droits de la vue d'examiner les données.
Lorsque vous accédez à votre base de données, essayez de taper:
Vous voudrez peut-être regarder dans les droits des vues spécifiques qui sont là.
et même buggy comportement peut se produire avec des déclencheurs.
Aljakim: pour moi, je l'appelle buggy parce que d'habitude je suis frappé après un dump/restore sur une autre base de données et je n'aime pas avoir les déclencheurs et les points de vue cassé parce que les utilisateurs sont différents (ou ont différentes restrictions sur les hôtes).
pause caractéristiques fondamentales si vous supprimez un utilisateur...', si vous spécifiez le point de vue d'utiliser les droits à la sécurité d'un utilisateur spécifique, il est logique qu'elle casse l'afficher si cet utilisateur est supprimé. Je ne pense pas que c'est un bug ou d'une mauvaise conception. Vous avez un point que les messages d'erreur sont vraiment vraiment mal dans ce cas.
Oh, enfin, le lien pour le manuel: dev.mysql.com/doc/refman/5.0/en/create-view.html cela donne des détails sur le réglage de la
DEFINER
, etc...OriginalL'auteur Eljakim
Les réponses ici m'a aidé avec mon problème spécifique. Merci beaucoup! D'un point de vue a été le coupable, comme décrit ci-dessus.
J'ai eu des ennuis parce que la base de données en question a été créé à partir d'une sauvegarde d'une base de données distante qui avait différents utilisateurs. Le "brisées" point de vue a été définie par un utilisateur, je n'avais pas localement. Même racine était pas en mesure d'exécuter le fracas de la requête.
Changé le point de vue "DÉFINISSEUR" pour un local valide de l'utilisateur et le problème a été résolu!
Découvrez MODIFIER la VUE de la documentation de MySQL 5.5
Merci beaucoup encore une fois!
OriginalL'auteur smile2day