13

我尝试使用 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
4

2 回答 2

7

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

有关cron使用调度作业的更多详细信息mysqldump,请查看此答案

于 2013-11-18T15:52:23.510 回答
7

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

[client]
user=root
password="VERYSECUREPASSWORD"

我花了一段时间才弄清楚为什么它不适用于包含大量非字母数字符号的密码

于 2014-12-13T13:35:30.770 回答