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

24

来源:http://dev.mysql.com/doc/refman/5.0/en/drop-database.html

当删除数据库时,用户对该数据库的权限不会自动删除。

因此问题就变成了,如何撤销MySQL数据库上所有用户的所有权限?我想这很简单,但我很惊讶我没有在任何地方找到这个答案。


1
你可以使用 revoke 命令。 - ryanprayogo
4个回答

27
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'@'%';

21

您可以使用这个语法为特定用户撤销所有权限:

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

该命令将删除指定用户或多个用户的所有全局、数据库、表、列和例程权限。

不确定是否有一种同时对所有用户执行此操作的方法。


3
需要注意的是,即使用户没有授予权限,在至少使用“授予选项”时也需要该选项。 - CrackerJack9
谢谢,然而如何在数据库上运行提到的命令并不清楚,以下操作会失败并显示SQL错误 - revoke all, with grant on $dbs.* from 'user'\@'localhost'。有线索吗? - Ilia

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

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

将其修改为:

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

或者

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

执行前


1
需要在5.5版本中使用"grant option",以便撤销所有权限。 - CrackerJack9
2
这非常非常危险,不建议这样做。 - MontyPython

-1

我想你可以这样做:

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

(不要直接修改MySQL表)


需要在至少5.5版本中使用"grant option",以便撤销所有权限。 - CrackerJack9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接