一、DCL
1.1、概述
DCL的英文全称是:Data Control Language,中文意思为: 数据控制语言,是用来管理数据库的用户以及控制用户的权限的。
1.2、管理用户
1.2.1、查询用户
select * from mysql.user;
说明:
其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以远程访问的。 User代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯一标识一个用户。
1.2.2、创建用户
语法:CREATE USER '<username>'@'<IP>' IDENTIFIED BY '<password>';
案例:CREATE USER 'scott'@'192.168.173.232' IDENTIFIED BY '123456';
注意事项:使用上述语句创建的用户,连最基本的连接权限都没有,需要为其分配权限才能使用!
1.2.3、修改密码
语法:ALTER USER '<username>'@'<IP>' IDENTIFIED WITH mysql_native_password BY '<新密码>' ;
案例:ALTER USER 'scott'@'192.168.173.232' IDENTIFIED WITH mysql_native_password BY 'tiger123456' ;
1.2.4、删除用户
语法:drop user '<username>'@'<IP>';
案例:drop user 'scott'@'192.168.173.232';
1.3、权限控制
1.3.1、MySQL中的权限概览
1.3.2、查询用户权限
语法:SHOW GRANTS FOR '<username>'@'IP' ;
案例:在演示用户的权限之前,我们先来创建一个用户,使用上面的sql脚本创建一个scott用户,看其有什么权限
(1)创建用户:CREATE USER 'scott'@'192.168.173.232' IDENTIFIED BY '123456';
(2)查询用户权限:show GRANTS for 'scott'@'%';
1.3.3、授予用户权限
语法:GRANT 权限列表 ON 数据库名.表名 TO '<username>'@'<IP>';
案例:
(1)授予select权限:grant select on vhr.employee to 'scott'@'%';
(2)查询用户权限
(3)授予all的权限
(4)授予权限后再次连接可以连接成功
1.3.4、回收用户权限
语法:REVOKE 权限列表 ON 数据库名.表名 FROM '<username>'@'<IP>';
案例:回收scott用户的update、delete权限:revoke DELETE,UPDATE on vhr.employee from 'scott'@'%';
1.3.5、注意事项
授予用户权限 or 回收用户权限时,如果涉及到的权限有多个,多个权限之间使用英文逗号进行分割;例如:revoke DELETE,UPDATE on vhr.employee from 'scott'@'%';