正在运行show grants;表示我以具有数据库所有特权的用户身份登录。
show grants;
运行会show table status;导致错误。并且错误不显示我作为登录用户名!
show table status;
就好像对于此命令,mysql忘记了我是谁。其他选择语句也可以正常工作。谁能解释一下?怎么修?谢谢。
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>
更新…根据Tomalak的建议,我删除了该用户,并使用更充分的特权和密码重新创建了该用户。问题仍然存在。现在看起来像这样:
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>
问题可能是您的数据库中有VIEWS。视图可能是使用特定权限创建的。
您可以从错误消息中看出,它抱怨的用户与您登录的用户 不同 。这是因为对于视图,您可以指定如何确定视图必须具有的查看数据权限。
当您进入数据库时,尝试输入:
SHOW FULL TABLES IN sunflower_work WHERE TABLE_TYPE NOT LIKE '%table%';
然后,您可能希望研究那里特定视图的权利。