为CURRENT_USER提供的资助很奇怪

时间:2013-03-17 12:05:53

标签: mysql

我试过

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表的授权?

1 个答案:

答案 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