首页/数据/数据库速查/XtraBackup 备份账号权限
备份与恢复56 条

XtraBackup 备份账号权限

8.0 最小权限:BACKUP_ADMIN;老式权限组合 PROCESS/RELOAD/LOCK TABLES/REPLICATION CLIENT;账号限制来源主机并单独管理密码。

数据库速查数据更新于 2026-10-13

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_ADMIN8.0 执行备份与克隆相关操作备份启动即失败
PROCESS读取线程与事务状态无法获取一致性信息
RELOAD执行刷新与锁相关操作备份中途报权限错误
LOCK TABLES备份非事务引擎表时锁表含非事务表的备份失败
REPLICATION CLIENT读取 binlog 位点无法记录恢复所需的位点
云数据库的限制要提前确认:部分云实例不开放 BACKUP_ADMIN,这时应改用云厂商提供的备份服务,而不是反复尝试授予权限。
备份账号口令不应出现在命令行或定时任务明文里:使用权限为 600 的凭据文件,或接入统一的凭据管理,避免口令随进程列表泄露。

易错点

  • 只授予 SELECT:物理备份需要读取文件与锁状态,权限不足会在启动阶段直接失败
  • 备份账号主机名写成 %:口令泄露后可从任意地址发起备份或获取位点信息,务必限定来源网段
  • 口令写在 cron 或脚本明文里:查看进程列表或历史记录即可获取,应使用受限权限的凭据文件
  • 沿用长年不轮换的备份账号口令:备份账号权限并不小,应纳入统一的凭据轮换计划
  • 在云实例上反复尝试提权:云厂商通常不开放相关权限,应先确认支持的备份方式

数据来源与参考

  • Percona XtraBackup 文档: 权限
  • MySQL 8.0 Reference Manual: Privileges

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌