权限与安全提要
账号与权限(DCL 提要)
遵循 最小权限:应用账号仅授予 SELECT/INSERT/UPDATE 等必要权限,禁止滥用 SUPER、文件导入导出等高危权限。生产环境 'user'@'%' 暴露面大,尽量收紧为内网 IP 或主机名。
sql
-- 1. 建登录名(主机建议缩小范围,少用 '%' 对全网)
CREATE USER 'app'@'%' IDENTIFIED BY '强随机密码';
-- 2. 再授权(与建用户分离,符合 MySQL 8+ 习惯写法)
GRANT SELECT, INSERT, UPDATE ON db_name.* TO 'app'@'%';
-- 8.0 多数情况 GRANT 已即时生效;兼容旧运维习惯时可保留
FLUSH PRIVILEGES;sql
-- 回收部分权限
REVOKE INSERT ON db_name.* FROM 'app'@'%';
-- 修改密码(8.0+)
ALTER USER 'app'@'%' IDENTIFIED BY '新的强随机密码';
-- 删除登录(先 REVOKE / 确认无会话再删)
DROP USER IF EXISTS 'app'@'%';MySQL 8.0 默认认证插件多为 caching_sha2_password,客户端驱动需支持;若必须兼容极老客户端,再在评估后考虑 mysql_native_password(不推荐作为长期方案)。
定期 SHOW GRANTS FOR 'app'@'%' 审计;离职与轮换及时 REVOKE / DROP USER。
基础安全
- 强密码、禁用匿名用户、限制 root 远程 与高权限账号暴露面。
- TLS 加密连接(尤其公网访问)。
- 升级版本修复已知 CVE;敏感库禁
LOAD DATA LOCAL等不必要能力(按业务评估)。
小结
安全是 权限 + 网络 + 运维补丁 的组合;ORM / 参数化查询配合应用层防 SQL 注入(详见前端安全 / 后端规范)。
