MySQL REVOKE语句-撤销权限
简介:在本教程中,您将学习如何使用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语句撤消用户帐户的特权。