我最近已将服务器升级到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正在按顺序备份我的数据库。
答案 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阻塞。