2

对于我们使用语句在 mySQL 中创建的每个新用户

CREATE USER newuser@localhost IDENTIFIED BY 'password';

“SHOW GRANTS”仅显示“USAGE ON *.*”权限。

但是用户可以在“test”和“information_schema”数据库上选择、插入、..,我无法使用下面给出的 revoke 语句撤销对“test”的这些权限。

REVOKE ALL ON test.* FROM newuser@localhost;
ERROR 1141 (42000) : There is no such grant defined for user 'guest' on host 'localhost'

我只是不希望 newuser 访问 test 和 information_schema 数据库。

4

1 回答 1

7

http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html

默认情况下,该mysql.db表包含允许任何用户访问test数据库和其他名称以 开头的数据库的行test_。(...) 这意味着即使是没有特权的帐户也可以使用此类数据库。如果要删除任何用户对测试数据库的访问权限,请执行以下操作:

mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;

(...) 通过前面的更改,只有具有全局数据库权限或明确授予测试数据库权限的用户才能使用它。

information_schema数据库是根据请求即时构建的只读伪数据库。用户将始终能够查阅此数据库,但它仅显示他们已经有权访问的条目。

于 2013-06-22T09:52:06.350 回答