啥是DCL?DCL用来管理数据库用户、控制数据库的访问权限。比如,我们之前下载MySQL时,设定的用户名root和密码1234,这样可以保证能够正常使用数据库。
DQL
01 管理用户
-- 1. 查询用户
USE mysql; -- 所用的数据库就是mysql
SELECT * FROM user; -- 所用的表就是user
-- 2. 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 3. 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码'; -- mysql_native_password 不变
-- 4. 删除用户
DROP USER '用户名'@'主机名';
举个栗子
- 创建用户mojing,只能在当前主机localhost访问,密码1234
- 创建用户lvmealn,可以在任意主机访问该数据库,密码1234
- 修改用户mojing的访问密码为4321
- 删除mojing@localhost用户和lvmealn@%用户
use mysql;
select * from user;
-- 1. 创建用户mojing,只能在当前主机localhost访问,密码1234
create user 'mojing'@'localhost' identified by '1234';
-- 2. 创建用户lvmealn,可以在任意主机访问该数据库,密码1234
create user 'lvmealn'@'%' identified by '1234';
-- 3. 修改用户mojing的访问密码为4321
alter user 'mojing'@'localhost' identified with mysql_native_password by '4321';
-- 4. 删除mojing@localhost用户和lvmealn@%用户
drop user 'mojing'@'localhost', 'lvmealn'@'%';
win+R,输入cmd确定,以mojing启动mysql:可以看到mojing仅能访问当前主机的数据库。
02 权限控制
权限 | 说明 |
---|---|
ALL, ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
其他权限详见官方文档
-- 1. 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
-- 2. 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
-- 3. 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
- 多个权限用“,”分隔
- 数据库名和表名可以使用通配符“*”,代表所有
举个栗子
创建mojing@localhost用户,并完成以下任务:
- 授予mojing查询、修改数据、修改表的权限
- 撤销mojing在world数据库的city表的权限
create user 'mojing'@'localhost' identified by '1234';
show grants for 'mojing'@'localhost';
-- 1. 授予mojing在数据库world中的 查询、修改数据、修改表 权限
grant select, update, alter on world.* to 'mojing'@'localhost';
show grants for 'mojing'@'localhost';
-- 2. 撤销mojing的所有权限
revoke all on *.* from 'mojing'@'localhost';
最初mojing@localhost用户时没有权限使用world数据库的,授予权限之后可以对数据库进行操作,撤销所有权限后,不能访问world数据库。
不总结=白学
THE END