在 MySQL 中使用 REVOKE 语句撤销用户权限
本文将带您学习在 MySQL 中如何使用 REVOKE
语句撤销用户的权限。
如果您面临以下的问题,或许您需要撤销用户的权限:
- 授予了用户错误的权限
- 授权到期了
MySQL 允许您使用 REVOKE
语句撤销授予用户的权限。
MySQL REVOKE
语句介绍
MySQL REVOKE
语句用于撤销用户帐户的一项或多项权限。
MySQL REVOKE
语句有几种形式。
撤销一项或多项权限
下面说明了 REVOKE
撤销用户帐户的一项或多项权限的语句的基本语法:
REVOKE
priv1 [, priv2 [, ...] ]
ON [object_type] privilege_level
FROM user1 [, user2 [, ...]];
在这个语法中:
- 在
REVOKE
关键字后指定要从用户帐户中撤销的以逗号分隔的权限列表。 - 在
ON
关键字后指定权限的对象类型和权限级别;查看GRANT
语句以获取有关权限级别的更多信息。 - 在
FROM
子句中指定一个或多个您要撤销其权限的用户帐户。
请注意,要执行这种形式的 REVOKE
语句,您必须具有 GRANT OPTION
权限或必须具有您要撤销的权限。
假设您要撤销用户 sqliz
的在 sqlizdb
数据库中的 UPDATE
和 DELETE
权限,请使用下面的语句:
REVOKE UPDATE, DELETE
ON sqlizdb.*
FROM 'sqliz'@'%';
撤销所有权限
要撤消用户的所有权限,请使用以下 REVOKE ALL
语句形式:
REVOKE
ALL [PRIVILEGES],
GRANT OPTION
FROM user1 [, user2];
假设您要撤销用户 sqliz
的所有权限,请使用下面的语句:
REVOKE
ALL PRIVILEGES,
GRANT OPTION
FROM 'sqliz'@'%';
要执行 REVOKE ALL
语句,您必须具有全局 CREATE USER
权限或系统数据库 mysql
的 UPDATE
权限。
撤销代理
要撤销代理用户,请使用以下 REVOKE PROXY
命令:
REVOKE PROXY
ON proxied_user
FROM proxy_user1 [, proxy_user1 [, ...]];
代理用户是 MySQL 中可以模拟另一个用户的有效用户,因此,代理用户拥有它模拟的用户的所有权限。
在撤销用户的权限之前,使用以下 SHOW GRANTS
语句显示用户帐户的权限是一个好习惯:
SHOW GRANTS FOR user;
MySQL REVOKE
生效时机
REVOKE
语句的生效时机取决于权限级别:
-
全局: 当用户帐户在后续会话中连接到 MySQL 服务器时,更改生效。更改不会应用于所有当前连接的用户。
-
数据库级别: 更改在下
USE
一条语句后生效。 -
表和列级别: 更改对所有后续查询生效。
结论
在 MySQL 中,您可以使用 REVOKE
语句撤销授予用户的一个或者多个权限。