首页 > 编程笔记 > MySQL笔记 阅读:14

MySQL REVOKE撤销权限命令的用法(附带实例)

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限,可以在一定程度上保证系统的安全性。

MySQL 使用 REVOKE 语句取消用户的某些权限。使用 REVOKE 收回权限之后,用户账户的记录将从 db、host、tables_priv 和 columns_priv 表中删除,但是用户账号记录仍然在 user 表中保存。

在将用户账户从 user 表删除之前,应该收回相应用户的所有权限。REVOKE 语句有两种语法格式。

1) 第一种语法是收回所有用户的所有权限,用于取消已授权的用户的所有全局层级、数据库层级、表层级和列层级的权限,具体如下:
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM 'user'@'host' [, 'user'@'host' ...]
REVOKE 语句必须和 FROM 语句一起使用。FROM语句指明需要收回权限的账户。

2) 另一种为长格式的 REVOKE 语句,基本语法如下:
REVOKE priv_type [(columns)] [, priv_type [(columns)]] ...
ON  table1, table2,…, tablen
FROM 'user'@'host'[, 'user'@ 'host' ...]
该语法收回指定的权限。其中:
要使用 REVOKE 语句,必须拥有 MySQL 数据库的全局 CREATE USER 权限或 UPDATE 权限。

【实例】使用 REVOKE 语句取消用户 grantUser 的查询权限。REVOKE 语句及其执行结果如下:
MySQL> REVOKE Select ON *.* FROM 'grantUser'@'localhost';
Query OK, 0 rows affected (0.00 sec)
结果显示执行成功。

使用 SELECT 语句查询用户 grantUser 的权限:
mysql> SELECT Host,User,Select_priv,Insert_priv,Grant_priv FROM MySQL.user where user='grantUser';
+-----------+-----------+-------------+-------------+------------+
| Host      | User      | Select_priv | Insert_priv | Grant_priv |
+-----------+-----------+-------------+-------------+------------+
| localhost | grantUser | N           | Y           | Y          |
+-----------+-----------+-------------+-------------+------------+
查询结果显示用户 user 的 Select_priv 字段值为“N”,SELECT 权限已经被收回。
提示,当从旧版本的 MySQL 升级时,如果要使用 EXECUTE、CREATE VIEW、SHOW VIEW、CREATE USER、CREATE ROUTINE 和 ALTER ROUTINE 权限,必须首先升级授权表。

相关文章