3

我试过了

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'@'%'

为什么 SHOW GRANTS FOR CURRENT_USER 不向我显示 test_script 表的授权?

4

1 回答 1

4

这看起来是因为CURRENT_USER(登录用户)是'test_user'@'localhost',他拥有与 不同的授权'test_user'@'%'

SHOW GRANTS FOR 'test_user'@'%'
SHOW GRANTS FOR 'test_user'@'localhost'

如果您通过 TCP 使用 登录mysql -h 127.0.0.1 -u test_user -p,您现在应该使用'test_user'@'%'授权。

SHOW GRANTS当您单独为用户名执行语句时,指定主机,MySQL 将尝试列出该用户的授权@'%'。如果该规范根本不存在,你会得到

ERROR 1141 (42000): There is no such grant defined for user 'test_user' on host '%'

在您的情况下,该规范存在,但与test_user@localhost.

于 2013-03-17T12:12:58.910 回答