撤销 MySQL 数据库上所有用户的所有权限

Posted

技术标签:

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

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

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

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

【问题讨论】:

您可以使用revoke 命令。 【参考方案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才能撤销所有权限 这是非常非常危险的,不推荐。

以上是关于撤销 MySQL 数据库上所有用户的所有权限的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的安全设置

用户可以撤销(运行时)权限的所有情况是啥? (在活动生命周期中)

redshift/Postgresql 8.0 撤销连接到用户的数据库

mysql 常用sql语句

MySQL 查看用户授予的权限

我是不是必须撤销超级用户对审计日志表的权限?