新用户拥有MySQL 5.6中的所有权限

时间:2013-09-11 15:21:27

标签: mysql database privileges grant

我在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'@'%'但我无法撤销,因为他没有。

当然,我试图撤销所有特权,但我不能,因为他没有任何特权。

我希望我很清楚。所以我很困惑,任何想法?

谢谢!

克莱门特

1 个答案:

答案 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;

或者,确保您的测试表不在具有此名称的数据库中,然后您将看到真实的行为。