在云环境中配置 MySQL 权限,核心是遵循最小权限原则、分离管理与业务账号、禁用默认高危配置,并结合云平台提供的安全能力做纵深防护。
严格限制远程访问与监听地址
云数据库默认可能绑定 0.0.0.0 或开放公网 IP,极易被暴力扫描。应确保 MySQL 仅监听内网地址(如 VPC 内网段),禁止绑定公网或 0.0.0.0。若必须远程管理,通过云平台的「白名单」或「安全组」控制源 IP,而非依赖 MySQL 自身的 host 限制。
修改 my.cnf 中的 bind-address 为具体内网 IP(如 10.0.1.5)或 127.0.0.1 云厂商(如阿里云 RDS、腾讯云 CDB)不开放 my.cnf 修改权限,需在控制台设置「专有网络 VPC」和「安全组规则」,只放行应用服务器所在子网 禁用 skip-networking(除非纯本地使用),但绝不开启无保护的公网访问按角色创建专用账号,禁用 root 远程登录
云环境不应使用 root 账号连接业务应用。应为每个应用、每个功能模块创建独立账号,并精确授予所需库表权限。
创建应用账号示例:CREATE USER 'app_order'@'10.0.1.%' IDENTIFIED BY 'StrongPass2024!';
GRANT SELECT, INSERT, UPDATE ON shop_db.orders TO 'app_order'@'10.0.1.%';
FLUSH PRIVILEGES; 删除或重命名 root 账号远程访问权限:
DROP USER 'root'@'%'; -- 或 REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%'; 管理账号(如 DBA)应限定来源 IP,且仅用于跳板机或堡垒机连接
启用 TLS 加密连接,避免明文传输凭证
云内网虽相对可信,但东西向流量仍可能被截获。所有客户端连接(尤其跨可用区或混合云场景)应强制使用 TLS。
云数据库(如 AWS RDS、阿里云 RDS)通常提供一键启用 SSL 的选项,启用后下载服务器 CA 证书 应用连接串中添加参数:?ssl-mode=REQUIRED&ssl-ca=/path/to/rds-combined-ca-bundle.pem 验证是否生效:登录后执行 SHOW STATUS LIKE 'Ssl_cipher';,返回非空值即表示加密已启用
定期审计权限与登录行为
云平台日志服务(如阿里云 ActionTrail、AWS CloudTrail + RDS 日志)可记录账号创建、权限变更、异常登录等事件,配合 MySQL 自身的 general_log 或 slow_query_log(谨慎开启)辅助分析。
每月检查高权限账号:SELECT user,host,account_locked,plugin FROM mysql.user WHERE Super_priv='Y' OR Grant_priv='Y'; 清理 90 天未登录的账号:
SELECT user,host,last_password_change FROM mysql.user WHERE last_password_change 云数据库控制台开启「SQL 审计日志」,保留至少 30 天,对接 SIEM 系统做规则告警(如 root 登录、大批量 DELETE、跨库 GRANT)
