一、什么是 DCLDCLData Control Language的作用是管理数据库用户和权限。简单来说就是控制谁可以登录数据库谁可以查询数据谁可以修改数据谁可以删除数据谁可以创建数据库举个例子假设公司有三种角色用户权限DBA所有权限后端开发查询、增删改数据分析师只能查询DCL 就是用来管理这些权限的。二、DCL 常见命令命令作用使用频率CREATE USER创建用户⭐⭐⭐ALTER USER修改用户⭐⭐DROP USER删除用户⭐⭐GRANT授予权限⭐⭐⭐⭐REVOKE撤销权限⭐⭐⭐SHOW GRANTS查看用户权限⭐⭐⭐三、创建用户CREATE USER基本语法CREATE USER 用户名主机 IDENTIFIED BY 密码;例如CREATE USER testlocalhost IDENTIFIED BY 123456;含义创建一个用户名为test只能从本机localhost登录密码为123456%的作用CREATE USER admin% IDENTIFIED BY 123456;%表示允许任何主机连接数据库。例如192.168.1.10 192.168.1.20 10.0.0.5都可以登录。⚠️ 企业中通常不会直接使用%而是限制具体 IP提高安全性。四、查看用户MySQL 用户信息保存在系统数据库mysql中SELECT user, host FROM mysql.user;可以看到所有数据库用户。五、修改密码ALTER USER修改用户密码ALTER USER testlocalhost IDENTIFIED BY new_password;六、删除用户DROP USERDROP USER testlocalhost;删除后该用户将无法再登录数据库。七、授予权限GRANT这是 DCL 中最重要的命令。例如GRANT SELECT ON school.* TO testlocalhost;含义给test授予SELECT可以查询school数据库中的所有表。授予多个权限GRANT SELECT, INSERT, UPDATE ON school.* TO testlocalhost;授予所有权限GRANT ALL PRIVILEGES ON school.* TO adminlocalhost;八、撤销权限REVOKE撤销查询权限REVOKE SELECT ON school.* FROM testlocalhost;撤销后该用户不能再执行SELECT * FROM student;九、查看用户权限查看当前用户SHOW GRANTS;查看指定用户SHOW GRANTS FOR testlocalhost;返回结果类似GRANT SELECT, INSERT ON school.* TO testlocalhost十、常见权限权限说明SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据CREATE创建数据库、表DROP删除数据库、表ALTER修改表结构INDEX创建索引ALL PRIVILEGES所有权限十一、企业中的权限管理一般不会让所有开发人员都拥有最高权限。例如角色权限DBA全部权限开发环境开发人员创建、修改、删除测试环境查询、增删改生产环境开发人员通常只有查询权限运维根据职责分配这样可以避免误删数据或误操作生产环境。十二、本节总结命令作用CREATE USER创建数据库用户ALTER USER修改用户信息或密码DROP USER删除用户GRANT授予权限REVOKE撤销权限SHOW GRANTS查看权限 本节核心一句话DCL 的作用不是操作数据而是管理数据库用户及其操作权限。 本章练习假设有一个数据库school请思考下面几个问题为什么数据库需要区分不同用户而不是所有人都使用root数据库区分不同用户是为了提高安全性、实现权限隔离和方便审计。localhost和%有什么区别企业为什么通常不建议使用%localhost 最安全只允许本机访问%允许任意主机访问安全风险较高因此企业通常限制为指定 IP 或内网网段。GRANT和REVOKE分别解决什么问题GRANT 用于授权REVOKE 用于收回权限它们共同实现数据库权限管理。为什么生产环境通常不会直接给开发人员ALL PRIVILEGES权限生产环境遵循最小权限原则避免因误操作或账号泄露造成严重的数据安全问题。如果一个数据分析师只需要查看数据你认为应该授予哪些权限GRANT SELECT ON company.* TO analystlocalhost;