摘要:在本教程中,您将学习如何使用 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@localhost
对classicmodels
数据库的SELECT
、 UPDATE
和INSERT
权限:
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@localhost
的UPDATE
和INSERT
权限:
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)
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)
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)
第三,撤销rfc@localhost
的PROXY
权限:
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
语句撤销用户帐户的权限。