MySQL REVOKE

MySQL REVOKE

摘要在本教程中,您将学习如何使用 MySQL REVOKE语句撤销用户帐户的权限

MySQL REVOKE语句简介

REVOKE语句撤销用户帐户的一项或多项权限。

REVOKE语句有多种形式。

撤销一项或多项权限

下面说明了撤销用户帐户的一项或多项权限的REVOKE语句的基本语法:

REVOKE
   privilegee [,privilege]..
ON [object_type] privilege_level
FROM user1 [, user2] ..;Code language: SQL (Structured Query Language) (sql)

在这个语法中:

  • 首先,在REVOKE关键字后指定要从用户帐户撤销的以逗号分隔的权限列表。
  • 其次,在ON关键字后指定权限的对象类型和权限级别;查看GRANT语句以获取有关权限级别的更多信息。
  • 第三,在FROM子句中指定要撤销其权限的一个或多个用户帐户。

请注意,要执行这种形式的REVOKE语句,您必须具有GRANT OPTION权限,或者必须具有要撤销的权限。

撤销所有权限

要撤销用户的所有权限,请使用以下形式的REVOKE ALL语句:

REVOKE 
    ALL [PRIVILEGES], 
    GRANT OPTION 
FROM user1 [, user2];Code language: SQL (Structured Query Language) (sql)

要执行REVOKE ALL语句,您必须具有全局CREATE USER权限或mysql系统数据库的UPDATE权限。

撤销代理

要撤销代理用户,请使用REVOKE PROXY命令:

REVOKE PROXY 
ON proxied_user 
FROM proxy_user1[,proxy_user1]...;
Code language: SQL (Structured Query Language) (sql)

代理用户是MySQL中的有效用户,可以模拟另一个用户,因此,代理用户拥有它模拟的用户的所有权限。

在撤销用户的权限之前,最好使用SHOW GRANTS语句显示用户帐户的权限:

SHOW GRANTS FOR user;Code language: SQL (Structured Query Language) (sql)

MySQL REVOKE示例

让我们举一些撤销特权的例子。

A) 使用 MySQL REVOKE撤销用户帐户的某些权限示例

首先,创建一个名为 rfc@localhost 的用户帐户:

CREATE USER rfc@localhost 
IDENTIFIED BY 'Secret1Pass!';Code language: SQL (Structured Query Language) (sql)

其次,授予rfc@localhostclassicmodels数据库的SELECTUPDATEINSERT权限:

GRANT SELECT, UPDATE, INSERT 
ON classicmodels.*
TO rfc@localhost;Code language: SQL (Structured Query Language) (sql)

第三,显示 rfc@localhost 用户帐户授予的权限:

SHOW GRANTS FOR rfc@localhost;Code language: SQL (Structured Query Language) (sql)

第四,撤销rfc@localhostUPDATEINSERT权限:

REVOKE INSERT, UPDATE
ON classicmodels.*
FROM rfc@localhost;Code language: SQL (Structured Query Language) (sql)

五、显示rfc@localhost的权限:

SHOW GRANTS FOR rfc@localhost;Code language: SQL (Structured Query Language) (sql)
MySQL 撤销权限示例

B) 使用 MySQL REVOKE撤销用户帐户的所有权限示例

首先,向rfc@localhost授予EXECUTE权限:

GRANT EXECUTE
ON classicmodels.*
TO rfc@localhost;Code language: SQL (Structured Query Language) (sql)

其次,显示rfc@localhost当前授予的权限:

第三,使用REVOKE ALL语句撤销rfc@localhost用户帐户的所有权限:

REVOKE ALL, GRANT OPTION
FROM rfc@localhost;Code language: SQL (Structured Query Language) (sql)

最后,显示rfc@localhost的权限来验证撤销:

SHOW GRANTS FOR rfc@localhost;Code language: SQL (Structured Query Language) (sql)
MySQL 撤销所有示例

rfc@localhost没有权限。请注意, USAGE权限意味着 MySQL 中没有权限。

C) 使用MySQL REVOKE撤销PROXY权限示例

首先,向rfc@localhost用户帐户授予PROXY权限:

GRANT PROXY 
ON root 
TO rfc@localhost;Code language: SQL (Structured Query Language) (sql)

其次,显示rfc@localhost授予的权限:

SHOW GRANTS FOR rfc@localhost;Code language: SQL (Structured Query Language) (sql)
MySQL 撤销代理

第三,撤销rfc@localhostPROXY权限:

REVOKE PROXY 
ON root 
FROM rfc@localhost;Code language: SQL (Structured Query Language) (sql)

最后,显示 rfc@lcoalhost 授予的权限以验证撤销:

SHOW GRANTS FOR rfc@localhost;Code language: SQL (Structured Query Language) (sql)

MySQL REVOKE命令何时生效

REVOKE语句的效果取决于权限级别:

全球水平

当用户帐户在后续会话中连接到 MySQL 服务器时,更改就会生效。这些更改不会应用于所有当前连接的用户。

数据库级别

更改在下一个USE语句后生效。

表和列级别

这些更改将对所有后续查询生效。

在本教程中,您学习了如何使用 MySQL REVOKE语句撤销用户帐户的权限。

本教程有帮助吗?