我最近把一台服务器升级到debian9,把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条答案
按热度按时间wlzqhblo1#
解决此问题的最佳方法是将变量重命名为:
loose-local-infile=1
这将允许mysqldump仅仅抛出一个警告,而不是致命错误。如果您希望立即加载datainfle功能,那么注解掉变量的建议不是一个选项,出于安全原因,mysql 8+要求您同时为服务器(mysqld)和客户端设置这个变量。如果不向本地infile添加“loose-”前缀,配置中的[client]变量分组会阻塞mysqldump。
pinkon5k2#
似乎您安装的新版本是在不支持的情况下编译的
local-infile
参数。由于包管理系统(通常)保留当前的配置文件,所以您可以尝试在中查找此参数my.ini
归档并注解。此参数管理
LOAD DATA LOCAL
功能。但似乎这有一些潜在的安全问题(这里有更多)