2

在 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'@'%'但我不能撤销它,因为他没有那个。

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

我希望我很清楚。所以我很困惑,有什么想法吗?

谢谢!

克莱门特

4

1 回答 1

3

在许多默认安装中,所有用户都对任何名为test或以test_.

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

默认情况下,mysql.db 表包含允许任何用户访问 test 数据库和其他名称以 test_ 开头的数据库的行。...如果要删除任何用户对测试数据库的访问权限,请执行以下操作:

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

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

于 2013-09-11T15:33:34.763 回答