在mySQL中撤消用户的权限

时间:2013-06-22 05:25:37

标签: mysql privileges mysqladmin mysqladministrator

对于我们使用语句

在mySQL中创建的每个新用户
CREATE USER newuser@localhost IDENTIFIED BY 'password';

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

但是用户能够在“test”和“information_schema”数据库上选择,插入......,并且我无法使用下面给出的撤销声明撤销“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数据库。

1 个答案:

答案 0 :(得分:6)

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数据库是一个只读的伪数据库,可根据请求即时构建。用户将始终能够查询此数据库,但它仅显示他们已有权访问的条目。