Mysql DCL语句使用

MySQL DCL 数据控制语句使用:GRANT/REVOKE 权限管理、用户管理、最小权限原则。

写在前面:合法学习边界

本文讲 MySQL DCL 权限管理,不涉及数据库攻击。

一、DCL 四大语句

MySQL 操作语句对比
1
2
DCL = Data Control Language(数据控制)
GRANT(授权) · REVOKE(收回权限)

二、创建用户

1
2
CREATE USER 'app'@'%' IDENTIFIED BY 'P@ssw0rd123';
CREATE USER 'dba'@'localhost' IDENTIFIED BY 'P@ssw0rd456';

三、授权

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
-- 只读权限
GRANT SELECT ON mydb.* TO 'app'@'%';

-- 增删改权限
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'%';

-- DBA 全权限
GRANT ALL PRIVILEGES ON *.* TO 'dba'@'localhost' WITH GRANT OPTION;

FLUSH PRIVILEGES;

四、收回权限

1
2
REVOKE DELETE ON mydb.users FROM 'app'@'%';
REVOKE ALL PRIVILEGES ON *.* FROM 'dba'@'localhost';

五、安全建议

1
2
3
4
5
① 禁止 ALL PRIVILEGES 给应用账号
② 限制连接来源 IP(localhost > %)
③ 定期审查权限列表
④ 使用最小权限原则
⑤ 密码强度要求(大写+小写+数字+特殊字符)

六、小结

DCL 是数据库安全的核心。最小权限原则是黄金法则:应用账号只给 SELECT/INSERT/UPDATE/DELETE,DBA 权限严格限制在 localhost。