我正在学习MySQL并尝试使用一个LOAD DATA
子句.当我使用它如下:
LOAD DATA INFILE "text.txt" INTO table mytable;
我收到以下错误:
MySQL服务器使用--secure-file-priv选项运行,因此无法执行此语句
我该如何处理这个错误?
我已经检查了同一错误消息的另一个问题,但仍无法找到解决方案.
我正在使用MySQL 5.6
它按预期工作.您的MySQL服务器已经使用--secure-file-priv选项启动,它基本上限制了您可以使用哪些目录加载文件LOAD DATA INFILE
.
您可以使用SHOW VARIABLES LIKE "secure_file_priv";
查看已配置的目录.
您有两种选择:
将文件移动到指定的目录secure-file-priv
.
禁用secure-file-priv
.必须从启动时删除,不能动态修改.为此,请检查MySQL启动参数(取决于平台)和my.ini.
我遇到过同样的问题.我终于使用LOCAL
命令中的选项解决了问题
LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;
您可以在http://dev.mysql.com/doc/refman/5.7/en/load-data.html找到更多信息.
如果指定了LOCAL,则客户端主机上的客户端程序将读取该文件并将其发送到服务器.该文件可以作为完整路径名提供,以指定其确切位置.如果以相对路径名的形式给出,则相对于启动客户端程序的目录解释名称.
在Ubuntu 14和Mysql 5.5.53上,默认情况下启用此设置.要禁用它,您需要添加secure-file-priv = ""
到mysqld配置组下的my.cnf文件.例如:-
[mysqld] secure-file-priv = ""
我正在使用Debian上的MySQL5.7.11,这个命令对我有用,看看目录是:
mysql> SELECT @@ global.secure_file_priv;
如果文件是您的计算机的本地文件,请在命令中使用LOCAL
LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;
以下是在Windows 7中禁用的功能secure-file-priv
(vhu的答案中的选项#2 ):
进入,停止MySQL服务器服务services.msc
.
转到C:\ProgramData\MySQL\MySQL Server 5.6
(ProgramData
在我的案例中是一个隐藏的文件夹).
my.ini
在记事本中打开该文件.
搜索'secure-file-priv'.
通过在行的开头添加"#"来注释掉行.
保存文件.
通过进入启动MySQL服务器服务secure-file-priv=""
.
对于MySQL Server 5.7.16及更高版本,请参阅下面的dbc评论.
@vhu
我做了SHOW VARIABLES LIKE "secure_file_priv";
,它又回来了,C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
所以当我插入它时,它仍然没有用。
当我直接进入my.ini文件时,我发现路径的格式略有不同: C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
然后,当我用它运行它时,它就起作用了。唯一的区别是斜线的方向。
我在'secure-file-priv'中遇到了同样的问题.在.ini文件中注释不起作用,也没有在'secure-file-priv'指定的目录中移动文件.
最后,正如dbc建议的那样,使'secure-file-priv'等于空字符串.因此,如果有人在尝试上面的答案后被卡住了,希望这样做会有所帮助.
对我有用的东西:
将文件放入中指定的文件夹中secure-file-priv
。
要找到该类型:
mysql>显示类似“ secure_file_priv”的变量;
检查你是否有local_infile = 1
。
输入以下内容:
mysql>显示类似“ local_infile”的变量;
如果你得到:
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+
然后将其设置为一种输入:
mysql>设置全局local_infile = 1;
指定文件的完整路径。就我而言:
mysql>将文件“ C:/ ProgramData / MySQL / MySQL Server 8.0 / Uploads / file.txt”中的数据加载到表测试中;