DCL (Data Control Language)
-
SQL分类:
1. DDL:操作数据库和表 create / alter / drop
2. DML:增删改表中数据 insert /update/delete
3. DQL:查询表中数据 select /show
4. DCL:管理用户,授权 grant /revoke- DBA:数据库管理员
-
DCL:管理用户,授权
- 1. 管理用户
1.1 添加用户:
* 语法:CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;
1.2 删除用户:
* 语法:DROP USER ‘用户名’@‘主机名’;
*
1.3.修改用户密码:
- 1. 管理用户
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'lisi';
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123');
[注意]
mysql8.0 之后的版本用
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY’新密码’;
mysql中忘记了root用户的密码?
- cmd – > net stop mysql 停止mysql服务
* 需要管理员运行该cmd
如上图,要是输入net stop mysql 显示服务名无效,
服务名无效原因:服务名是你安装MySQL时手动或默认配置的,忘记之后直接查看用cmd输入services.msc,
然后在cmd中输入net stop MySQL80.13(我设置成了MySQL80.13)即可关闭(也可以直接在打开的msc文件中右键-属性-禁用)。
2. 使用无验证方式启动mysql服务:skip-grant-tables在8.0中已失效
输入 在cmd中使用mysqld --console --skip-grant-tables --shared-memory
-
打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
-
use mysql;
-
update user set password = password(‘你的新密码’) where user = ‘root’;
-
关闭两个窗口
-
打开任务管理器,手动结束mysqld.exe 的进程
-
启动mysql服务
-
使用新密码登录。
-
4查询用户
– 1. 切换到mysql数据库
USE myql;
– 2. 查询user表
SELECT * FROM USER;
* 通配符: % 表示可以在任意主机使用用户
- 2. 权限管理:
-
1. 查询权限:
– 查询权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;
SHOW GRANTS FOR ‘Tom’@‘localhost’;
root权限就很多
-
2. 授予权限:
– 授予权限
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
– 给张三用户授予所有权限,在任意数据库任意表上GRANT ALL ON *.* TO 'Tom'@'localhost'; ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020103015481091.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDY2NDQzMg==,size_16,color_FFFFFF,t_70#pic_center)
-
只能查询到db3中的account表,并且对account表进行不了增删改除等操作。
- 3. 撤销权限:
– 撤销权限:
revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;
例: REVOKE SELECT ON db3.account
FROM ‘Tom’@‘localhost’;