为MySQL创建一个只读备份帐户

时间:2020-01-09 10:37:51  来源:igfitidea点击:

数据很重要,需要加以保护。保持定期的备份计划意味着我们将需要自动执行该过程。为此,我们可能正在运行脚本来转储数据库,从而使凭据容易被公开。通过使用只读帐户执行备份来限制曝光

数据可能会被更改,而不是使用管理员帐户或者具有写权限的帐户。提供只读用户来执行数据库备份将限制我们受到攻击的风险。

创建只读帐户

  • 使用管理员帐户登录MySQL
  • 为要保护的数据库创建一个具有LOCK TABLES和SELECT权限的新用户。
GRANT LOCK TABLES, SELECT ON DATABASE_NAME.* TO 'BACKUP_USER'@'%' IDENTIFIED BY 'PASSWORD';
  • 要应用我们的新权限,我们需要刷新旧权限。
FLUSH PRIVILEGES;

自动化备份脚本

以下是将数据库转储到本地文件系统的简单脚本。它将保留10个最新备份的历史记录。任何较旧的内容都将被清除,以降低存储需求。

#!/bin/bash

# Set the backup date
BACKUP_DATE=`date +%Y-%m-%d`
BACKUP_DIR=/var/mysql_backups
BACKUP_HISTORY=10

# Dump the database
mysqldump -u BACKUP_USER -p'PASSWORD' DATABASE_NAME > $BACKUP_DIR/dump_$DATE.sql

# Remove all but the latest backups
cd $BACKUP_DIR
ls -t | tail -n +$BACKUP_HISTORY | xargs rm --

确保备份文件只能由管理员或者备份所有者读取,写入和执行。例如,仅允许对文件的根访问。

chcon 0600 backup_script.sh

安排自动备份作业

使用脚本自动执行备份作业就像创建cron作业一样简单。我们运行备份作业的频率取决于数据更改的频率。对于此示例,我们将在4:00 AM执行每日备份。

  • 成为根
sudo -s
  • 打开crontab
crontab -e
  • 添加以下行
0 4 * * * /root/backup_script.sh
  • 保存更改并退出编辑器