在 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 数据库中的 UPDATEDELETE 权限,请使用下面的语句:

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 权限或系统数据库 mysqlUPDATE 权限。

撤销代理

要撤销代理用户,请使用以下 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 语句撤销授予用户的一个或者多个权限。