--secure-file-priv 导致 MySQL 自更新后不接受 LOAD DATA INFILE

--secure-file-priv 导致 MySQL 自更新后不接受 LOAD DATA INFILE

从 mysql 5.6 升级到 mysql 5.7 之后(由于从 Ubuntu 15.10 更新到 Ubuntu 16.04 并且之前使用过 purge,因为更新中有一个 bug:https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279),LOAD DATA INFILE我的每一个申请都会导致:

Caused by: java.sql.SQLException: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

该选项在更新过程中似乎发生了变化:

mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

不幸的是,我找不到可以指定此选项的地方:

root@reichelt-ThinkPad-T440s:/etc/mysql# fgrep "secure-file-priv" * -r

不返回任何内容。默认值似乎已更改:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv

自己将其设置为/etc/mysql/mysql.conf.d/mysqld.cnf旧值/var/lib/mysql确实解决了问题,但是,当我不设置它时,它会打印上面的错误,而该错误不应该打印,因为该值是默认设置的。这是 mysql 行为中的错误,还是我错过了行为中的某些内容?

答案1

这里有几个解决此问题的选项。

-使用以下命令确定可以从中导入文件的指定目录:

1.SHOW VARIABLES LIKE "secure_file_priv"; -或者,您可以在查询中使用 LOCAL。这样,文件将由客户端(而不是服务器)导入,并通过现有的客户端连接提供。

2.将数据本地输入文件“text.txt”加载到表mytable中;

相关内容