首页/数据/数据库速查/备份专用账号与最小权限
备份与恢复56 条

备份专用账号与最小权限

备份账号按需授权:SELECT/SHOW VIEW/TRIGGER/EVENT/LOCK TABLES/RELOAD/REPLICATION CLIENT/PROCESS,避免用 root 跑脚本扩大泄漏面。

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

备份账号的最小权限

备份脚本应使用专用账号而不是 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 跑备份会把最高权限暴露在脚本和定时任务里,凭据一旦泄漏整库失守,必须改为最小权限的专用账号。

凭据与审计做法

  • 凭据存放于仅备份账号可读的文件,或使用受保护的选项文件
  • 账号来源限定为备份机地址,并用密码过期策略定期轮换
  • 每季度复核一次授权清单,移除已经不需要的权限项
  • 备份失败与权限变更都要留痕,便于事后审计追溯

易错点

  • 用 root 执行备份脚本:凭据泄漏即全库失守,且无法区分备份与人工操作来源
  • 遗漏 RELOAD 或 REPLICATION CLIENT:带位点导出的选项直接报权限错误,备份失败
  • 账号来源用 % 通配:任意主机都能尝试登录,攻击面被放大
  • 口令写在命令行或明文脚本:ps 输出与文件内容都能看到,应使用受保护的凭据文件

数据来源与参考

  • MySQL 8.0 Reference Manual: Privileges Provided by MySQL
  • MySQL 8.0 Reference Manual: mysqldump

相关工具

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