XtraBackup 备份账号权限是什么
物理备份需要的权限与逻辑备份不同:它要读取数据文件、观察线程与锁状态、获取 binlog 位点。MySQL 8.0 引入 BACKUP_ADMIN 动态权限后权限模型明显简化;老版本则需要 PROCESS、RELOAD、LOCK TABLES、REPLICATION CLIENT 组合。无论哪个版本,备份账号都应限制来源主机并单独管理口令。
基本信息
| 8.0 关键权限 | BACKUP_ADMIN 等,按官方文档给出的最小集合授予 |
|---|---|
| 老版本组合 | PROCESS、RELOAD、LOCK TABLES、REPLICATION CLIENT |
| 来源限制 | 账号主机名限定到备份机网段,不用 % |
| 口令管理 | 凭据文件权限 600,避免写在命令行或明文脚本里 |
| 云上差异 | 云数据库可能不允许这类权限,需按其备份服务方案执行 |
典型使用场景
- 备份体系上线:为备份工具创建独立账号,避免使用高权限运维账号
- 权限收敛整改:把历史遗留的 root 备份脚本改成专用账号
- 故障排查:备份报权限错误时逐项核对缺少哪个权限
- 多实例统一:同一套备份脚本对接多个实例时统一账号模板
- 审计要求:备份账号与业务账号分离,便于追溯操作来源
创建备份账号
创建备份账号
-- 创建来源受限的备份账号
CREATE USER 'xtrabackup'@'10.0.%' IDENTIFIED BY 'Str0ng#Backup!';
-- 授予备份所需权限(按官方文档核对当前版本的最小集合)
GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES,
REPLICATION CLIENT ON *.* TO 'xtrabackup'@'10.0.%';
-- 查看结果确认没有多授
SHOW GRANTS FOR 'xtrabackup'@'10.0.%';
-- 备份脚本使用凭据文件,不要把口令写在命令行
-- ~/.my.cnf 权限设为 600权限用途
| 权限 | 用途 | 缺少时的表现 |
|---|---|---|
| BACKUP_ADMIN | 8.0 执行备份与克隆相关操作 | 备份启动即失败 |
| PROCESS | 读取线程与事务状态 | 无法获取一致性信息 |
| RELOAD | 执行刷新与锁相关操作 | 备份中途报权限错误 |
| LOCK TABLES | 备份非事务引擎表时锁表 | 含非事务表的备份失败 |
| REPLICATION CLIENT | 读取 binlog 位点 | 无法记录恢复所需的位点 |
云数据库的限制要提前确认:部分云实例不开放 BACKUP_ADMIN,这时应改用云厂商提供的备份服务,而不是反复尝试授予权限。
备份账号口令不应出现在命令行或定时任务明文里:使用权限为 600 的凭据文件,或接入统一的凭据管理,避免口令随进程列表泄露。