当前位置: 代码网 > it编程>数据库>Mysql > MySQL DCL数据控制语言的完整教程

MySQL DCL数据控制语言的完整教程

2026年07月16日 Mysql 我要评论
一、sql 语言分为四大类:ddl(数据定义):库、表结构操作 create/drop/alterdml(数据操纵):表里增删改查 insert/delete/update/selectdql(数据查

一、sql 语言分为四大类:

  1. ddl(数据定义):库、表结构操作 create/drop/alter
  2. dml(数据操纵):表里增删改查 insert/delete/update/select
  3. dql(数据查询):select 查询语句
  4. dcl(data control language 数据控制语言) 专门用来管理数据库用户、分配回收访问权限,核心指令:create userdrop usergrantrevokeset passwordflush privileges

日常开发、运维、数据库安全隔离都离不开 dcl:不同业务账号分配最小权限,避免删库、泄露数据风险。

二、24. dcl 用户管理(创建 / 修改 / 删除 / 查看用户)

mysql 用户完整格式:用户名@访问主机

  • root@localhost:仅本机登录
  • user@%:任意 ip 远程登录
  • user@192.168.1.%:指定网段访问

1. 查看所有用户

用户信息存储在系统库 mysqluser

use mysql;
select user, host from user;

2. 创建新用户

语法:

create user '用户名'@'主机' identified by '密码';

示例:

-- 仅本地登录
create user 'dev'@'localhost' identified by 'dev@123456';
-- 任意远程地址登录
create user 'test'@'%' identified by 'test@654321';

3. 修改用户密码

方式 1:set password(推荐)

set password for 'dev'@'localhost' = password('newdev@789');

方式 2:alter user(mysql5.7+/8.0 + 标准)

alter user 'dev'@'localhost' identified by 'newpass123';

4. 修改用户允许访问的主机

update mysql.user set host = '%' where user = 'dev';
flush privileges; -- 刷新权限生效

5. 删除用户

drop user if exists 'test'@'%';

三、25. dcl 权限控制(授予 / 回收 / 查看权限)

1. 常用数据库权限

权限名

作用

select

查询表数据

insert

插入数据

update

更新数据

delete

删除数据

create

创建库 / 表

drop

删除库 / 表

alter

修改表结构

all privileges

全部权限(除 grant 授权权限)

2. grant 授予权限

语法:

drop user if exists 'test'@'%';

场景 1:给 dev 用户分配 test_db 下所有表查询、新增权限

grant select,insert on test_db.* to 'dev'@'localhost';

场景 2:分配全库所有权限(运维账号慎用)

grant all privileges on *.* to 'admin'@'%';

授权后刷新生效

flush privileges;

3. 查看用户已有权限

show grants for 'dev'@'localhost';

4. revoke 回收权限

回收已分配的指定权限:

revoke insert on test_db.* from 'dev'@'localhost'; flush privileges;

回收全部权限:

revoke all privileges on *.* from 'admin'@'%';

权限最小化原则

生产环境禁止给业务账号 all privileges,只分配业务必需的 select/insert/update,不授予 drop/alter 高危权限,防止误操作破坏数据。

四、26. dcl 完整知识点小结

1. dcl 核心作用

管控数据库登录账号与访问权限,保障数据库数据安全,实现多账号权限隔离。

2. 用户管理核心命令

  1. 查询用户:select user,host from mysql.user
  2. 创建用户:create user 用户名@主机 identified by 密码
  3. 修改密码:alter user / set password
  4. 删除用户:drop user

3. 权限控制核心命令

  1. 授权:grant 权限 on 库.表 to 用户
  2. 回收权限:revoke 权限 on 库.表 from 用户
  3. 查看权限:show grants for 用户
  4. 刷新权限:flush privileges(修改用户 / 权限后必须执行)

4. 生产最佳实践

  1. 区分账号:管理员 root、运维账号、业务读写账号,各司其职;
  2. 限制访问主机:业务账号限定应用服务器 ip,禁止 % 全开放远程;
  3. 最小权限分配:不给业务账号删表、删库、修改结构权限;
  4. 定期清理闲置用户,定期轮换账号密码。

5. 易踩坑点

  1. 创建用户、授权时用户名 + 主机必须完全匹配,否则不生效;
  2. 修改用户表、权限表后忘记执行 flush privileges,变更不生效;
  3. 弱密码账号直接对外开放远程访问,存在数据库泄露风险;
  4. 开发环境随意使用 all privileges,直接复制到生产环境。

结尾

dcl 是数据库安全的基础,不管后端开发还是运维都必须熟练掌握。合理划分用户、精细控制权限,能极大降低删库、数据泄露等线上事故概率。下一章我们可以结合真实业务场景,演示一套完整的生产账号权限分配脚本。

以上就是mysql dcl数据控制语言的完整教程的详细内容,更多关于mysql dcl数据控制语言的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com