MySQL REVOKE语句-撤销权限

时间:2019-11-20 08:52:34  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL REVOKE语句撤消用户帐户的特权。

MySQL REVOKE语句简介

REVOKE语句从用户帐户撤消一项或多项特权。

REVOKE语句具有几种形式。

撤消一项或多项特权

以下内容说明了REVOKE语句的基本语法,该语句从用户帐户撤消一个或多个特权:

REVOKE
   privilegee [,privilege]..
ON [object_type] privilege_level
FROM user1 [, user2] ..;

使用以下语法:

  • 首先,在REVOKE关键字之后,指定要从用户帐户撤消的逗号分隔特权的列表。

  • 其次,在ON关键字之后指定对象类型和特权级别。
    签出GRANT语句以获取有关特权级别的更多信息。

  • 第三,在FROM子句中指定要从中撤消特权的一个或多个用户帐户。

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

撤消所有特权

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

REVOKE 
    ALL [PRIVILEGES], 
    GRANT OPTION 
FROM user1 [, user2];

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

撤销代理

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

REVOKE PROXY 
ON proxied_user 
FROM proxy_user1[,proxy_user1]...;

代理用户是MySQL中可以模拟另一个用户的有效用户,因此,代理用户具有其模拟用户的所有特权。

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

SHOW GRANTS FOR user;

MySQL REVOKE示例

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

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

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

CREATE USER rfc@localhost 
IDENTIFIED BY 'Secret1Pass!';

其次,向rfc @ localhost授予classicmodels数据库的SELECT,UPDATE和INSERT特权:

GRANT SELECT, UPDATE, INSERT 
ON classicmodels.*
TO rfc@localhost;

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

SHOW GRANTS FOR rfc@localhost;

第四,从rfc @ localhost撤消UPDATE和INSERT特权:

REVOKE INSERT, UPDATE
ON classicmodels.*
FROM rfc@localhost;

第五,显示rfc @ localhost的特权:

SHOW GRANTS FOR rfc@localhost;

B)使用MySQL REVOKE撤消用户帐户示例中的所有特权

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

GRANT EXECUTE
ON classicmodels.*
TO rfc@localhost;

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

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

REVOKE ALL, GRANT OPTION
FROM rfc@localhost;

最后,显示rfc @ localhost的特权以验证撤销:

SHOW GRANTS FOR rfc@localhost;

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

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

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

GRANT PROXY 
ON root 
TO rfc@localhost;

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

SHOW GRANTS FOR rfc@localhost;

第三,从rfc @ localhost撤销PROXY特权:

REVOKE PROXY 
ON root 
FROM rfc@localhost;

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

SHOW GRANTS FOR rfc@localhost;

MySQL REVOKE命令生效时

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

全局级别

当用户帐户在后续会话中连接到MySQL Server时,更改将生效。
所做的更改不会应用于所有当前连接的用户。

数据库级别

更改将在下一条USE语句之后生效。

表和列级别

所做的更改将对所有后续查询生效。

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