代码之家  ›  专栏  ›  技术社区  ›  vaan38

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

  •  2
  • vaan38  · 技术社区  · 11 年前

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

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

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

    谢谢

    Clment公司

    1 回复  |  直到 11 年前
        1
  •  3
  •   Jeremy Smyth    11 年前

    在许多默认安装中,所有用户都对任何名为 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;
    

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