👨🎓 DCL数据控制语言
## DCL什么意思?
DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限
## 管理用户
* 查询用户:
```
USE mysql;
SELECT * FROM user;
```
* 创建用户:
`CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';`
* 修改用户密码:
`ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';`
* 删除用户:
`DROP USER '用户名'@'主机名';`
* 例子:
```
-- 创建用户test,只能在当前主机localhost访问
create user 'test'@'localhost' identified by '123456';
-- 创建用户test,能在任意主机访问
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密码
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 删除用户
drop user 'test'@'localhost';
```
>d 注意事项
> 主机名可以使用 % 通配
## 权限控制
* 常用权限
| 权限 | 说明 |
| :------------------ | :----------------- |
| ALL, ALL PRIVILEGES | 所有权限 |
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| ALTER | 修改表 |
| DROP | 删除数据库/表/视图 |
| CREATE | 创建数据库/表 |
更多权限 [权限详情表](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html)
* 查询权限:
`SHOW GRANTS FOR '用户名'@'主机名';`
* 授予权限:
`GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';`
* 撤销权限:
`REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';`
>d 注意事项
> * 多个权限用逗号分隔
>* 授权时,数据库名和表名可以用 * 进行通配,代表所有