我有一个 bash shell 用于备份需要密码才能打开的数据库。我想在 cron 作业上运行它,但如何让它自动运行而无需填写数据库密码?
ubuntu 服务器版本:20.04.3 Mysql 版本:8.0.26
我尝试的命令:mysqldump -u root -p "dbname" > backupname.sql
当我按下回车键时,系统要求输入密码。当我删除时-p
,出现错误。
答案1
为了mysqldump
与root
MySQL 帐户一起使用,您需要在命令前添加前缀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
选项。--triggers
mysqldump
答案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