MySQLdump 备份脚本不再有效,出现“mysqldump: 未知变量 'local-infile=0'”

Chr*_*tia 4 mysql bash debian

我最近将服务器升级到 Debian 9,并将 MySQL 升级到最新版本。我有一个简单的备份脚本,在生产站点上执行任何工作之前运行该脚本,但这一次,在运行脚本时,我遇到以下情况:

mysqldump: unknown variable 'local-infile=0'
Run Code Online (Sandbox Code Playgroud)

这是我的脚本。这是怎么回事?

#!/bin/bash
# [skipping commentary]

SITE=prod

# Set the directory that the Drupal root is IN, no trailing slashes
DROOT=[website_root]

# Set the directory for storing backups, no trailing slashes
BUD=/$DROOT/notes/backups

# Don't edit; End of defining variables
echo Doing a full back up...
echo Prepare to enter MySQL password...
# tar -czf $BUD/$SITE-files-$(date +'%Y%m%d%H%M%S').tgz  $DROOT/docroot
mysqldump -u mysql_user -p drupal > $BUD/$SITE-drupal-$(date +'%Y%m%d%H%M%S').sql
mysqldump -u mysql_user -p civicrm > $BUD/$SITE-civicrm-$(date +'%Y%m%d%H%M%S').sql
ls -lh $BUD
pwd
echo Finished with backups...
Run Code Online (Sandbox Code Playgroud)

MySQL版本10.1.37-MariaDB-0+deb9u1 Debian 9.6

编辑:当我 ssh 并使用正确的权限运行 mysqldump 时,我遇到了同样的问题。最奇怪的是,运行类似过程的 cron 正在按顺序备份我的数据库。

Ada*_*man 5

解决此问题的最佳方法是将变量重命名为: loose-local-infile=1

这将允许 mysqldump 仅抛出警告,而不是致命错误。

如果您想要开箱即用的 LOAD DATA INFILE 功能,则注释掉该变量的建议不是一个选项,并且出于安全原因,MySQL 8+ 要求您为服务器 (mysqld) 和客户端设置此变量。如果您不向 local-infile 添加“loose-”前缀,则配置中的 [client] 变量分组会阻塞 mysqldump。