在不暴露 /etc/crontab 中密码的情况下进行 cron 计划的数据库备份(转储)

在不暴露 /etc/crontab 中密码的情况下进行 cron 计划的数据库备份(转储)

我使用以下/etc/crontab代码在过去 30 天内创建数据库的每日备份:

0 8 * * * mysqldump -u root -PASSWORD --all-databases > /root/backups/mysql/db.sql
1 8 * * * zip /root/backups/mysql/db-$(date +\%F-\%T-).sql.zip /root/backups/mysql/db.sql
2 8 * * * rm /root/backups/mysql/db.sql
2 8 * * * find /root/backups/mysql/* -mtime +30 -exec rm {} \;

我的问题:

我必须把我的密码放在哪里-PASSWORD。这样,如果我错误地输入更改此文件中的某些内容并且我附近的人看到了它,我的密码就会暴露。

是否可以在不输入密码的情况下使用脚本?或者,您是否知道类似的语法,不会强迫我在那里为 cronjob 写入密码?

答案1

  1. 创建一个脚本来执行完整的转储、备份和清理。

  2. 安排脚本。

此外,密码mysql也可以存储在受保护的文件中,并且不需要在命令行上给出。

MySQL 有一个“最终用户密码安全指南“您可能想要查阅的文档。

总结该文件:

在您的主目录中创建.my.cnf并添加密码,如下所示:

[client]
password=your_pass

然后删除其他用户对该文件的读取权限:

$ chmod 600 .my.cnf

或者,等价地,

$ chmod u=rw,go-rwx .my.cnf

如果命名该文件并将其放置在您的主目录中,则客户端程序(以及).my.cnf将自动使用该文件。mysqlmysqldump

不过,请将备份等放入其自己的脚本中并安排它。这将比许多 cron 作业更容易维护。

相关内容