【问题标题】:MySQL permissions to see all databasesMySQL 权限查看所有数据库
【发布时间】:2017-01-28 00:58:51
【问题描述】:

我的服务器上有几个用户可以访问每个 MySQL 数据库。我正在尝试撤销特权,但我不知道该怎么做。

例如:我有一个用户bob,他可以访问我服务器上的每个数据库。我运行以下命令来查看bob 拥有哪些权限:

mysql -e "select * from information_schema.user_privileges;" | grep bob
'bob'@'%'       def     SELECT  NO
'bob'@'%'       def     INSERT  NO
'bob'@'%'       def     UPDATE  NO
'bob'@'%'       def     DELETE  NO
'bob'@'%'       def     CREATE  NO
'bob'@'%'       def     FILE    NO
'bob'@'%'       def     CREATE USER     NO

没有什么能像GRANTALLSUPER 这样跳出来的。我创建了一个新数据库sometest,切换到bob 的帐户,看到bob 可以访问sometest。不确定我在这里缺少什么。

编辑:我运行SHOW GRANTS FOR 'bob'@'%'; 并看到:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,
  PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, 
  LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, 
  CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE 
  ON *.* TO 'bob'@'%'

1) 如何放弃此权限?我假设如果我运行:

REVOKE SELECT, INSERT,... on *.* to 'bob'@'%';

它会删除类似的权限

GRANT ALL ON bobsdb.* TO 'bob'@'%';

这是我不想发生的。但也许最好只是删除所有特权并从头开始构建它们。

2) 如何识别所有这样的权限?我必须查看每个用户吗?

【问题讨论】:

    标签: mysql privileges


    【解决方案1】:

    您应该能够使用以下命令查看用户的授权:

    SHOW GRANTS FOR 'bob'@'localhost';
    

    来自 MySQL 手册:

    SHOW DATABASES 权限使帐户能够通过发出 SHOW DATABASE 语句来查看数据库名称。没有此权限的帐户只能看到他们拥有某些权限的数据库,并且如果服务器是使用 --skip-show-database 选项启动的,则根本无法使用该语句。请注意,任何全局权限都是数据库的权限。

    如果启用了 SHOW DATABASES,请撤销该权限。

    REVOKE SHOW DATABASES ON *.* FROM 'bob'@'localhost';
    

    最后,使用命令重新加载所有权限:

    FLUSH PRIVILEGES;
    

    (或重新启动 MySQL - 如果这是一个选项 - 通常不是)。

    P.S:您可能需要将“localhost”替换为您的数据库主机名。

    一些参考资料:

    编辑:

    回答您的问题:

    1) 如何放弃此权限?我假设如果我运行:REVOKE SELECT, INSERT,... on *.* to 'bob'@'%';

    你可以简单地运行REVOKE ALL ON *.* TO 'bob'@'%';

    2) 如何识别所有这样的权限?我必须查看每个用户吗?

    看到这个blog post. Disclamer:我与这个博客没有关联。

    【讨论】:

    • 谢谢!这不是问题,但它确实帮助我确定了问题。见编辑。
    • 我已经修改了文本以包含对您以后问题的答案。
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2011-06-28
    • 2012-06-30
    • 2014-11-14
    • 1970-01-01
    • 2011-07-14
    相关资源
    最近更新 更多