我试过
SHOW GRANTS FOR CURRENT_USER
它告诉我:
GRANT USAGE ON *.* TO 'test_user'@'localhost' IDENTIFIED BY PASSWORD 'pass'
但是此用户已为test_script
数据库的选择授予。
以下是root显示授权:
SHOW GRANTS FOR test_user
GRANT USAGE ON *.* TO 'test_user'@'%'
GRANT SELECT ON `test_script`.* TO 'test_user'@'%'
为什么为CURRENT_USER显示GRANTS没有显示test_script表的授权?
答案 0 :(得分:4)
这看起来是因为CURRENT_USER
(已登录的用户)是'test_user'@'localhost'
,其授权来自'test_user'@'%'
。
SHOW GRANTS FOR 'test_user'@'%'
SHOW GRANTS FOR 'test_user'@'localhost'
如果您使用mysql -h 127.0.0.1 -u test_user -p
通过TCP登录,则现在应该使用'test_user'@'%'
拨款。
当您仅为用户名执行SHOW GRANTS
语句时,没有指定主机,MySQL将尝试列出用户@'%'
的授权。如果那个规范根本不存在,你就会得到
ERROR 1141 (42000): There is no such grant defined for user 'test_user' on host '%'
在您的情况下,该规范存在,但授权不同于test_user@localhost
。