MySQLdump备份脚本不再起作用,得到“ mysqldump:未知变量'local-infile = 0'”

时间:2018-12-28 09:51:47

标签: mysql bash debian

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

mysqldump: unknown variable 'local-infile=0'

这是我的剧本。发生了什么事?

#!/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...

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

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

2 个答案:

答案 0 :(得分:0)

好像您安装的新版本是在不支持local-infile参数的情况下编译的。而且,由于软件包管理系统(通常)会保留您当前的配置文件,因此您可以尝试在my.ini文件中找到此参数并对其进行注释。

此参数管理LOAD DATA LOCAL功能。但这似乎有一些潜在的安全问题(more here

答案 1 :(得分:0)

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

这将使mysqldump仅仅发出警告,而不是致命错误。

如果您想立即使用LOAD DATA INFILE功能,则建议不要对变量进行注释,出于安全原因,MySQL 8+要求您同时为 服务器设置此变量( mysqld)和客户端。如果不将“ loose-”前缀添加到本地文件中,则是配置中的[client]变量分组使mysqldump阻塞。