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

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

我得到了以下错误:

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

如何解决这个错误?

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

我使用的是MySQL 5.6


当前回答

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

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

对我有用的是:

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

其他回答

在macOS Catalina上,我按照以下步骤设置secure_file_priv

1.停止MySQL服务

 sudo /usr/local/mysql/support-files/mysql.server stop

2.重新启动MYSQL分配——secure_file_priv系统变量

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

注意:添加空值修复了我的问题,MYSQL将导出数据到目录/usr/local/ MYSQL /data/ your_db_table /EXPORT_FILE

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

谢谢

我用命令中的LOCAL选项解决了这个问题:

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

你可以在这里找到更多信息。

上的客户端程序读取文件 客户端主机和发送到服务器。该文件可以作为一个完整的 路径名称,以指定其确切位置。如果给出一个相对路径 名称时,名称将相对于所在的目录进行解释 客户端程序启动。

对于运行MySQL 5.6.23的MacOS Mojave,我在写文件时遇到了这个问题,但没有加载它们。(以前版本的Mac OS没有)。由于这个问题的大多数答案都是针对其他系统的,我想我应该发布my.cnf文件来解决这个问题(以及一个套接字问题),以防它对其他Mac用户有帮助。这是/etc/my.cnf

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
secure-file-priv = ""
skip-external-locking

(国际化与问题无关。)

没有其他要求。只需要关闭MySQL服务器,然后在首选项中再次打开(我们说的是Mac)。

在ubuntu 20.04中: 执行如下命令在系统中找到my.cnf:

commandlocate my.cnf

现在:编辑这个文件

sudo vim /etc/mysql/my.cnf

最后增加如下一行:

[mysqld]
secure-file-priv = ""

现在您可以导入文件,此错误将被删除。 或者你可以使用Mysql工作台文件导入: 链接:https://blog.skyvia.com/how-to-import-csv-file-into-mysql-table-in-4-different-ways/

如果你在Ubuntu上运行,你可能还需要配置Apparmor以允许MySQL写入到你的文件夹,例如,以下是我的配置:

将这一行添加到文件/etc/ apparor .d/usr.sbin中。mysqld:

/var/lib/mysql-files/* rw

然后在/etc/mysql/my.cnf部分添加以下两行配置:

[client]
loose-local-infile = 1

[mysqld]
secure-file-priv = ""

下面是我的SQL语句:

select id from blahs into outfile '/var/lib/mysql-files/blahs';

这对我很管用。好运!