撤销 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 数据库上所有用户的所有权限的主要内容,如果未能解决你的问题,请参考以下文章
用户可以撤销(运行时)权限的所有情况是啥? (在活动生命周期中)