【问题标题】:Revoke all privileges for all users on a MySQL DB撤销 MySQL 数据库上所有用户的所有权限
【发布时间】:2011-07-14 07:53:51
【问题描述】:

发件人:http://dev.mysql.com/doc/refman/5.0/en/drop-database.html

...删除数据库时,不会自动删除数据库上的用户权限。

那么问题就变成了,如何撤销 MySQL DB 上所有用户的所有权限?我想这很简单,但我很惊讶我无法在任何地方找到它。

【问题讨论】:

  • 您可以使用revoke 命令。

标签: mysql


【解决方案1】:
REVOKE ALL PRIVILEGES ON *.* FROM '<user_name>'@'localhost';
REVOKE ALL PRIVILEGES ON *.* FROM '<user_name>'@'%';

例如:

REVOKE ALL PRIVILEGES ON *.* FROM 'jeffrey'@'localhost';
REVOKE ALL PRIVILEGES ON *.* FROM 'jeffrey'@'%';

【讨论】:

    【解决方案2】:

    您可以使用this syntax 撤销特定用户的所有权限:

    REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
    FLUSH PRIVILEGES;
    

    删除指定用户的所有全局、数据库、表、列和例程权限

    但不确定是否有办法同时为所有用户执行此操作。

    【讨论】:

    • 需要注意的是,5.5 至少需要“,grant option”,即使用户没有授权选项
    • 谢谢,但不清楚如何使用数据库运行上述命令,以下失败并出现 SQL 错误 - revoke all, with grant on $dbs.* from 'user'\@'localhost'。有什么线索吗?
    【解决方案3】:

    我想你可以这样做:

    REVOKE ALL PRIVILEGES FROM '%'@'%';
    FLUSH PRIVILEGES;
    

    (不要直接修改 MySQL 表)

    【讨论】:

    • 需要“,授予选项”,至少5.5才能撤销所有权限
    【解决方案4】:
    REVOKE ALL PRIVILEGES FROM '%'@'%';
    

    以上可能很危险,因为我想它会删除所有用户的所有权限,包括 root

    修改为:

    REVOKE ALL PRIVILEGES FROM 'user'@'localhost';
    

    REVOKE ALL PRIVILEGES FROM 'user'@'%';
    

    执行前

    【讨论】:

    • 需要“,授予选项”,至少5.5才能撤销所有权限
    • 这是非常非常危险的,不推荐。
    猜你喜欢
    • 2018-09-29
    • 2020-02-16
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多