使用 cron 作业和密码运行 bash shell

使用 cron 作业和密码运行 bash shell

我有一个 bash shell 用于备份需要密码才能打开的数据库。我想在 cron 作业上运行它,但如何让它自动运行而无需填写数据库密码?

ubuntu 服务器版本:20.04.3 Mysql 版本:8.0.26

我尝试的命令:mysqldump -u root -p "dbname" > backupname.sql 当我按下回车键时,系统要求输入密码。当我删除时-p,出现错误。

答案1

为了mysqldumprootMySQL 帐户一起使用,您需要在命令前添加前缀sudo

sudo mysqldump database_name > backup.sql

如果您想通过 cron 作业运行它,那么您可以执行以下操作:

0 3 * * * mysqldump database_name > /path/to/backups/backup.sql

另外,如果您想压缩该备份并使文件名包含日期,您可以执行以下操作:

0 3 * * * mysqldump database_name | gzip > /path/to/backups/backup_$(date +\%Y-\%m-\%d).gz

如果您的数据库包含存储过程或触发器,请确保在命令中包含必要的--routines选项。--triggersmysqldump

答案2

基本上,您可以将以下内容添加到您的my.cnf文件中

[mysqldump]
user=mysqluser
password=secret

或者,您可以在调用之前导出以下内容mysqldump

MYSQL_PWD=yourverysecretpassword

出于安全原因,强烈建议不要使用-p您尝试的参数。

更多信息和扩展解决方案https://stackoverflow.com/questions/9293042/how-to-perform-a-mysqldump-without-a-password-prompt

相关内容