没有密码的mysqldump在crontab中

时间:2013-11-11 11:16:02

标签: mysql cron backup mysqldump crontab

我尝试使用mysqldump和cronjobs备份我的数据库。

好吧,我将以下命令添加到用户root的crontab:

*/30 * * * * mysqldump -u root -pVERYSECUREPASSWORD --all-databases > /var/www/cloud/dump_komplett.sql &> /dev/null

到目前为止这个工作正常,但问题是密码是在此命令中设置的。

所以我想要包含一个看起来像这样的.database.cnf文件

[mysqldump]
user=root
password=VERYSECUREPASSWORD

并将mysqldump命令更改为

mysqldump --defaults-extra-file="/var/crons/mysql/.database.cnf" --all-databases -u root > /var/www/cloud/dump_komplett.sql

解决这个问题。

但是此命令失败并显示错误:

mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect

我不知道出了什么问题。

以下是我也尝试过的一些命令:

mysqldump --defaults-extra-file="/var/crons/mysql/.database.cnf" --all-databases > /var/www/cloud/dump_komplett.sql
mysqldump --defaults-file="/var/crons/mysql/.database.cnf" --all-databases > /var/www/cloud/dump_komplett.sql
mysqldump --defaults-file="/var/crons/mysql/.database.cnf" --all-databases -u root > /var/www/cloud/dump_komplett.sql

和.database.cnf内容我也尝试过:

[client]
user=root
password=VERYSECUREPASSWORD

[mysqldump]
host=localhost
user=root
password=VERYSECUREPASSWORD

[client]
host=localhost
user=root
password=VERYSECUREPASSWORD

2 个答案:

答案 0 :(得分:7)

必须在命令中指定用户,而不是在带有u参数的文件中指定。

有关使用cron安排mysqldump个工作的详细信息,请查看this answer

答案 1 :(得分:3)

我发现密码应该在引号之间

[client]
user=root
password="VERYSECUREPASSWORD"

我花了一段时间才弄明白为什么它不适用于带有大量非数字符号的密码