Crontab本身不管理数据库权限,仅定时触发脚本;“备份库权限标准化”指在自动化备份中确保数据库账户最小权限、脚本与目录系统权限隔离可控,并由专用用户执行任务。
Crontab 本身不管理数据库权限,它只负责定时触发脚本。所谓“备份库的权限标准化”,实际是指:在自动化备份流程中,确保执行备份的数据库账户具备最小必要权限,且脚本、文件、目录的系统级权限合理可控。核心不是 crontab 设置权限,而是围绕它构建一套权限明确、隔离、可审计的备份执行环境。
备份账户不应使用 root 或高权限账号。应单独创建专用用户,并仅授予必需权限:
--lock-tables 使用(若用 --single-transaction 可省略,但建议保留以兼容 MyISAM 表)建用户示例:
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'strong_password';<br>GRANT SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, ROUTINE ON `mydb`.* TO 'backup_user'@'localhost';<br>FLUSH PRIVILEGES;
避免密码明文暴露在脚本中,也防止非授权用户读取备份凭证:
~/.my.cnf,属主仅限运行脚本的用户(如 chmod 600 ~/.my.cnf)chmod 750(所有者可读写执行,同组可读执行,其他无权)/data/mysql_backup)应由备份用户专属拥有:chown backupuser:backupgroup /data/mysql_backup,权限设为 750
/tmp 或全局可写目录谁启动 crontab,谁承担权限责任。生产环境强烈建议:
backupuser)而非 root 运行备份任务crontab -e,避免混用 sudo crontab -e(后者属于 root 的 crontab,权限过高)cd /home/backupuser/scripts<br>export PATH="/usr/bin:/bin"
/usr/bin/mysqldump),避免因 cron 环境 PATH 缺失导致失败输出内容同样体现权限设计是否严谨:
/var/log/mysql-backup.log)应由备份用户创建并独占写入,权限 640
chmod 640 "$BACKUP_FILE"
find /data/mysql_backup -name "*.sql.gz" -not -user backupuser -exec chown backupuser {} ;