我在mySQL 5.6中创建新用户时遇到问题
我想要的: 当我创建新用户时,它没有任何权限,我只想在一些特定列中授予一些选择和更新。所以他应该能够更新所有数据库中的任何内容。听起来很公平。
首先,我创建了一个新用户:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
在此之后,我使用我的新用户登录,当我执行show grants;
命令时,我有:
GRANT USAGE ON *.* TO 'newuser'@'%' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'
所以在我的理论中,他不能在我的数据库中做任何事情,因为他没有任何GRANT SELECT
特权。
但是当我在我的测试表中进行选择时,他可以查看所有列和所有结果。他可以更新......并做他想做的一切。这就像他有一个GRANT SELECT,UPDATE,DELETE ... ON *.* TO 'newuser'@'%'
但我无法撤销,因为他没有。
当然,我试图撤销所有特权,但我不能,因为他没有任何特权。
我希望我很清楚。所以我很困惑,任何想法?
谢谢!
克莱门特
答案 0 :(得分:3)
在许多默认安装中,所有用户都拥有名为test
或以test_
开头的任何数据库中的表的所有权限。
来自http://dev.mysql.com/doc/refman/5.6/en/default-privileges.html#idp5999952:
默认情况下,mysql.db表包含允许任何用户访问测试数据库和名称以test_开头的其他数据库的行。 ...如果要删除任何用户对测试数据库的访问权限,请按以下步骤操作:
mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
mysql> FLUSH PRIVILEGES;
或者,确保您的测试表不在具有此名称的数据库中,然后您将看到真实的行为。