为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
- 保存更改并退出编辑器