我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:

LOAD DATA INFILE "text.txt" INTO table mytable;

我得到了以下错误:

MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句

如何解决这个错误?

我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。

我使用的是MySQL 5.6


当前回答

无需更改任何配置文件..

使用@vhu发布的命令查找secure_file_priv的值:SHOW VARIABLES LIKE "secure_file_priv" 定义查询的完整路径,例如:select * from table into outfile 'secure_file_priv_PATH/OUTPUT-FILE'…剩下的问题

这适用于我的mysql-shell在ubuntu 18.04 LTS mysql 5.7.29

其他回答

在Ubuntu 14和Mysql 5.5.53上,这个设置默认是启用的。要禁用它,你需要在mysqld配置组下的my.cnf文件中添加secure-file-priv = ""。如:-

[mysqld]
secure-file-priv = ""

对于mysql 8.0版本,你可以这样做:

mysql.server stop
mysql.server start --secure-file-priv=''

这招在Mac High Sierra很管用。

无需更改任何配置文件..

使用@vhu发布的命令查找secure_file_priv的值:SHOW VARIABLES LIKE "secure_file_priv" 定义查询的完整路径,例如:select * from table into outfile 'secure_file_priv_PATH/OUTPUT-FILE'…剩下的问题

这适用于我的mysql-shell在ubuntu 18.04 LTS mysql 5.7.29

在这篇文章发表时,这个帖子已经被浏览了570k次。说实话,MySQL什么时候变成了我们过度保护的无理妈妈了?这是多么耗费时间的安全尝试——这实际上只会束缚我们!

经过多次搜索和尝试,一切都失败了。 我的解决方案:

对我有用的是:

导入。csv文件通过PhpMyAdmin导入旧的盒子(如果大做在cmd行) 生成一个.sql文件。 下载。sql文件。 通过MySQL Workbench导入.sql文件。

这为我工作(有额外的问题,不能使用本地与我当前的MySQL版本在语句LOAD DATE INFILE…)

sudo /usr/local/mysql/support-files/mysql.server start --secure-file-priv='' --local-infile

上述方法适用于我的机器上的给定路径;你可能需要调整你的路线。

然后使用:

mysql -u root -p

重要的一点是,您应该在MySQL数据文件夹中有CSV。在我的机器中,它位于:/usr/local/mysql-8.0.18-macos10.14-x86_64/data

如果需要在数据文件夹中删除CSV,可以更改文件夹权限。

设置: macOS Catalina 10.15.5版本 MySQL 8.0.18版本