DCL(Data Control Language 数据控制语言),用来管理数据库用户、控制数据库的访问权限。
管理用户
1.查询用户
use mysql;
select * from user;
2.创建用户
create user '用户名'@'主机名' identified by '密码';
3.修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
4.删除用户
drop user '用户名'@'主机名';
案例
-- 创建用户itcast,只能够在当前主机localhost访问,密码123456
create user 'itcast'@'localhost' identified by '123456';
-- 创建用户heima,可以在任意主机访问该数据库,密码123456
create user 'heima'@'%' identified by '123456';
-- 修改用户heima的访问密码为1234
alter user 'heima'@'%' identified with mysql_native_password by '1234';
-- 删除itcast@localhost用户
drop user 'itcast'@'localhost';
注意:
主机名可以使用%通配;
这类SQL开发人员操作的比较少,主要是DBA(Database Administrator 数据库管理员)使用。
权限控制
权限 | 说明 |
all, all privileges | 所有权限 |
select | 查询数据 |
insert | 插入数据 |
update | 修改数据 |
delete | 删除数据 |
alter | 修改表 |
drop | 删除数据库/表/试图 |
create | 创建数据库/表 |
1. 查询权限
show grants for '用户名'@'主机名';
2. 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3. 撤销权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
案例
-- 查询权限
show grants for 'heima'@'%';
-- 授予权限
grant all on itcast.* to 'heima'@'%';
--撤销权限
revoke all on itcast.* from 'heima'@'%';
注意:
多个权限之间,使用逗号分隔
授权时,数据库名和表名可以使用*进行通配,代表所有。