备份账号的最小权限
备份脚本应使用专用账号而不是 root:按备份方式授予 SELECT、SHOW VIEW、TRIGGER、EVENT、LOCK TABLES、RELOAD、REPLICATION CLIENT、PROCESS 等必要权限,并把来源主机限制为备份机地址。这样即使凭据泄漏,影响面也被限制在读取与备份相关操作上。
基本信息
| 适用 | MySQL 5.7 / 8.0 备份账号治理 |
|---|---|
| 原则 | 最小权限:按实际备份方式逐项授予 |
| 来源限制 | 账号来源主机限定为备份机内网地址 |
| 凭据存放 | 使用受限权限的凭据文件,避免写在命令行 |
创建备份账号
创建备份账号
CREATE USER 'backup'@'10.0.%' IDENTIFIED BY 'Str0ng#Backup!'; # 来源限定到备份网段
GRANT SELECT, SHOW VIEW, TRIGGER, EVENT, LOCK TABLES, RELOAD, REPLICATION CLIENT, PROCESS ON *.* TO 'backup'@'10.0.%';
FLUSH PRIVILEGES; # 立即生效
SHOW GRANTS FOR 'backup'@'10.0.%'; # 核对授权范围
ALTER USER 'backup'@'10.0.%' PASSWORD EXPIRE INTERVAL 180 DAY; # 凭据定期轮换权限与用途对照
| 权限 | 用途 | 缺少时的表现 |
|---|---|---|
| SELECT | 读取表数据 | 导出直接报权限不足 |
| SHOW VIEW | 导出视图定义 | 视图变成不可读或缺失 |
| TRIGGER / EVENT | 导出触发器与事件 | 恢复后缺对象 |
| LOCK TABLES | 旧式锁表备份方式 | 相关选项执行失败 |
| RELOAD / REPLICATION CLIENT | 记录 binlog 位点 | --source-data 报权限错误 |
| PROCESS | 查看线程与状态信息 | 无法读取完整会话与状态 |
典型使用场景
- 新建备份通道时创建专用账号
- 安全审计:清理用 root 跑备份的历史脚本
- 权限收敛:从 root 迁移到专用账号并验证备份仍可完成
- 凭据轮换:结合密码过期策略定期更换
- 多实例统一备份:账号来源限定在备份机地址
云数据库的权限体系可能受限,按平台提供的权限集裁剪;账号来源主机要限定为备份机的内网地址,而不是通配符。
用 root 跑备份会把最高权限暴露在脚本和定时任务里,凭据一旦泄漏整库失守,必须改为最小权限的专用账号。
凭据与审计做法
- 凭据存放于仅备份账号可读的文件,或使用受保护的选项文件
- 账号来源限定为备份机地址,并用密码过期策略定期轮换
- 每季度复核一次授权清单,移除已经不需要的权限项
- 备份失败与权限变更都要留痕,便于事后审计追溯