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