我使用以下/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
创建一个脚本来执行完整的转储、备份和清理。
安排脚本。
此外,密码mysql
也可以存储在受保护的文件中,并且不需要在命令行上给出。
MySQL 有一个“最终用户密码安全指南“您可能想要查阅的文档。
总结该文件:
在您的主目录中创建.my.cnf
并添加密码,如下所示:
[client]
password=your_pass
然后删除其他用户对该文件的读取权限:
$ chmod 600 .my.cnf
或者,等价地,
$ chmod u=rw,go-rwx .my.cnf
如果命名该文件并将其放置在您的主目录中,则客户端程序(以及).my.cnf
将自动使用该文件。mysql
mysqldump
不过,请将备份等放入其自己的脚本中并安排它。这将比许多 cron 作业更容易维护。