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