DCL —— 用户管理语言(MySQL)
DCL(Data Control Language) 主要用于控制数据库的安全性,核心内容包括:
- 用户管理
- 权限管理
在 MySQL 中,DCL 语句通常作用于 mysql 系统数据库。
一、用户管理
1. 查看数据库与用户表
-- 查看所有数据库
SHOW DATABASES;
-- 切换到系统数据库
USE mysql;
-- 查看用户表
SELECT * FROM user;
MySQL 中所有用户信息都存储在
mysql.user表中。
二、创建用户
1. 基本语法
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
2. 主机名说明
localhost:只允许本机登录%:允许任意主机远程登录
3. 示例:创建用户
CREATE USER 'test'@'%' IDENTIFIED BY 'test01';
三、修改用户密码
1. 修改密码(旧版本写法,基于 user 表)
UPDATE user
SET authentication_string = PASSWORD('010214')
WHERE User = 'test';
PASSWORD()为 MySQL 的加密函数,用于对明文密码进行加密。
⚠️ 注意:
-
修改
user表后,建议执行:FLUSH PRIVILEGES;以立即生效权限更改。
四、删除用户
1. 语法
DROP USER '用户名'@'主机名';
2. 示例
DROP USER 'test'@'%';
五、忘记 root 密码的处理
当忘记 MySQL 的 root 用户密码时,需要通过 跳过权限表 的方式重置密码,步骤较为繁琐,通常涉及:
- 修改 MySQL 启动参数
- 跳过权限验证启动
- 重置密码后恢复正常模式
六、权限管理
1. 查询用户权限
SHOW GRANTS FOR 'test'@'%';
2. 授予权限
基本语法
GRANT 权限列表
ON 数据库名.表名
TO '用户名'@'主机名';
示例 1:授予部分权限
GRANT SELECT, DELETE, UPDATE
ON jdbcTest.bank
TO 'test'@'%';
示例 2:授予所有权限(不推荐用于生产环境)
GRANT ALL ON *.* TO 'test'@'%';
说明:
*.*表示 所有数据库的所有表ALL表示全部权限
3. 撤销权限
基本语法
REVOKE 权限列表
ON 数据库名.表名
FROM '用户名'@'主机名';
示例
REVOKE SELECT, DELETE, UPDATE
ON jdbcTest.bank
FROM 'test'@'%';
七、常见权限类型说明
| 权限 | 说明 |
|---|---|
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 更新数据 |
| DELETE | 删除数据 |
| ALL | 所有权限 |
| CREATE | 创建数据库 / 表 |
| DROP | 删除数据库 / 表 |
八、小结
-
DCL 主要用于 数据库安全管理
-
用户信息存储在
mysql.user表中 -
核心操作包括:
- 创建用户(CREATE USER)
- 删除用户(DROP USER)
- 修改密码
- 授权(GRANT)
- 回收权限(REVOKE)
-
实际开发中应遵循 最小权限原则,避免滥用
ALL权限