一、概述
二 、授权
2.1 语法格式
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user[IDENTIFIED BY [PASSWORD] 'password']] ...
[WITH with_option [with_option]...]
2.2 语法说明
with_option 参数一共5个选项
2.3 权限类型
权限类型分类
① 授予数据库权限时,<权限类型>可以指定为以下值
② 授予表权限时,<权限类型>可以指定为以下值:
③ 授予列权限时,<权限类型>可以指定以下值
④授予用户权限时,<权限类型> 除了可以指定为授予数据库权限,还可以指定以下值
2.4 权限级别
三、 回收权限
3.1 语法格式
REVOKE priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user]...
3.2 语法说明
3.3 注意事项
- REVOKE 语法和 GRANT 语句的语法格式相似,但具有相反的效果。
- 要使用 REVOKE 语句,必须拥有 MySQL 数据库的全局 CREATE USER 权限或 UPDATE 权限
四 、实践操作
① 运维童鞋想要查询所有用户的权限
select * FROM mysql.user;
②运维童鞋想要创建一个新的用户testXiezhr,密码为testXiezhr。并授予test用户所有的数据查询、插入权限
# 创建用户并授权
mysql> GRANT SELECT,INSERT ON *.*
-> TO 'testXiezhr'@'localhost'
-> IDENTIFIED BY 'testXiezhr'
-> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.01 sec)
# 使用 SHOW GRANTS 语句查询用户 testXiezhr的权限
mysql> show grants for 'testXiezhr'@localhost;
+---------------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+---------------------------------------------------------------------------+
| GRANT SELECT, INSERT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)
③ 运维童鞋想要收回testXiezhr用户的插入权限
# 使用revoke关键字收回insert 权限
mysql> REVOKE INSERT ON *.* FROM 'testXiezhr'@'localhost';
Query OK, 0 rows affected (0.00 sec)
#使用 SHOW GRANTS 语句查询用户 testXiezhr的权限,我们发现insert 权限没有了
mysql> show grants for 'testXiezhr'@localhost;
+-------------------------------------------------------------------+
| Grants for testXiezhr@localhost |
+-------------------------------------------------------------------+
| GRANT SELECT ON *.* TO 'testXiezhr'@'localhost' WITH GRANT OPTION |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)