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 GRANTs 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