mysqldump 在 cPanel cron 作业中存在问题

mysqldump 在 cPanel cron 作业中存在问题

要创建数据库的自动备份,我在 cPanel cron 作业中使用此命令

mysqldump --opt -Q -u {mysql_user_name} --password='{password}' {database} | gzip > /home/[account_name]/db_backup/db_backup$(date +"%Y.%m.%d.%S.%N").sql.gz

当我尝试通过 SSH/putty 运行此命令时,它工作正常,但是在 cPanel cron 中使用时(服务器操作系统是 CENTOS 7.6 kvm),我收到此错误

/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file

答案1

由于您的 MySQL 密码中有特殊字符,因此如果您想在 cron 作业中使用裸命令,则需要对其进行转义,因为它对%cron 具有特殊含义。

我建议使用脚本代替,例如一个简单的:

#!/bin/bash

mysqldump --opt -Q -u'{mysql_user_name}' --password='{password}' {database} | gzip > /home/[account_name]/db_backup/db_backup$(date +"%Y.%m.%d.%S.%N").sql.gz

您可以更进一步,将凭据移至变量:

#!/bin/bash

MY_USER="{mysql_user_name}"
MY_PWD="{password}"

mysqldump --opt -Q -u"$MY_USER" --password="$MY_PWD" {database} | gzip > /home/[account_name]/db_backup/db_backup$(date +"%Y.%m.%d.%S.%N").sql.gz

这应该对你有用。

相关内容