手动运行时mysqldump的Shell脚本工作正常,但在cron作业中不运行?

use*_*612 5 mysql cron mysqldump

我有一个 shell 脚本来获取 MySQL 数据库转储。手动运行时,此脚本工作正常

#!/bin/sh
fqn=/home/Mysqluser/daily_dumps/bookstore_`date +%Y%m%d_%H%M%S`.sql.gz
mysqldump -u root -h localhost -pmysql#passwd bookstore | gzip > $fqn
Run Code Online (Sandbox Code Playgroud)

但是,当我将此脚本包含在 cron 作业中时,它不会进行备份。

这是我在 cron 工作中包含的内容:

00 00 * * *  /home/Mysqluser/daily_dumps/bin/backup_database.sh
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

Nif*_*fle 0

这可能是因为环境(env在提示符下键入以查看它)不同。

我在尝试在 cron.daily 中运行 mysql 查询时遇到了类似的问题,我通过添加此标志解决了它--defaults-file=/root/.my.cnf

看起来 mysqldump 有一个类似的标志--defaults-extra-file(需要作为第一个参数),但如果这不起作用,请尝试找出命令行环境和 cron 环境之间的区别。创建一个将输出打印env到文件的 cronjob,并将其与从 shell 运行它时得到的结果进行比较。