当前位置:  开发笔记 > 后端 > 正文

我该如何处理MySQL中的--secure-file-priv?

如何解决《我该如何处理MySQL中的--secure-file-priv?》经验,为你挑选了9个好方法。

我正在学习MySQL并尝试使用一个LOAD DATA子句.当我使用它如下:

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

我收到以下错误:

MySQL服务器使用--secure-file-priv选项运行,因此无法执行此语句

我该如何处理这个错误?

我已经检查了同一错误消息的另一个问题,但仍无法找到解决方案.

我正在使用MySQL 5.6



1> vhu..:

它按预期工作.您的MySQL服务器已经使用--secure-file-priv选项启动,它基本上限制了您可以使用哪些目录加载文件LOAD DATA INFILE.

您可以使用SHOW VARIABLES LIKE "secure_file_priv";查看已配置的目录.

您有两种选择:

    将文件移动到指定的目录secure-file-priv.

    禁用secure-file-priv.必须从启动时删除,不能动态修改.为此,请检查MySQL启动参数(取决于平台)和my.ini.


值:NULL.FML.
请注意,如果使用"select .. into outfile",则必须指定完整路径,并且完整路径必须与`SHOW VARIABLES LIKE"secure_file_priv"的结果匹配;;
"检查参数"和"检查my.ini"不是一个很好的答案
默认情况下,在W2012服务器上运行MySQL 5.6时,可以从"C:\ ProgramData\MySQL\MySQL Server 5.6"找到my.ini.您可能还想检查服务启动参数(例如--defaults-file ="C:\ ProgramData\MySQL\MySQL Server 5.6\my.ini),因为它们也可能列出`--secure-file-priv`本身.
@ Mohitbhasi,my-default.ini应该位于“ C:\ Program Files \ MySQL \ MySQL Server 5.6”文件夹中。vhu所指的位置是“ C:\ ProgramData \ MySQL \ MySQL Server 5.6”。以防万一您没有注意到。

2> Staza..:

我遇到过同样的问题.我终于使用LOCAL命令中的选项解决了问题

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

您可以在http://dev.mysql.com/doc/refman/5.7/en/load-data.html找到更多信息.

如果指定了LOCAL,则客户端主机上的客户端程序将读取该文件并将其发送到服务器.该文件可以作为完整路径名提供,以指定其确切位置.如果以相对路径名的形式给出,则相对于启动客户端程序的目录解释名称.


对于mysql版本5.7.19,我得到了"这个MySQL版本不允许使用的命令".
我收到了MariaDB的错误消息:"ERROR 1148(42000):此MariaDB版本不允许使用该命令".确切版本:"mysql Ver 15.1 Distrib 10.1.22-MariaDB,for Linux(x86_64)using readline 5.2"
这对我和其他人都有用.我试过:1.将我的txt文件上传到`C:\ ProgramData\MySQL\MySQL Server 5.7\Uploads`,2.在`my.ini`中禁用`secure_file_priv`并重启mysql 3.这一个!谢谢 :)

3> Mustafa..:

在Ubuntu 14和Mysql 5.5.53上,默认情况下启用此设置.要禁用它,您需要添加secure-file-priv = ""到mysqld配置组下的my.cnf文件.例如:-

[mysqld]
secure-file-priv = ""



4> Carlos Med..:

我正在使用Debian上的MySQL5.7.11,这个命令对我有用,看看目录是:

mysql> SELECT @@ global.secure_file_priv;


那你怎么编辑呢?我试图在/etc/mysql/my.cnf中对其进行编辑,但似乎没有效果-保持NULL

5> garyrgilbert..:

如果文件是您的计算机的本地文件,请在命令中使用LOCAL

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



6> Ramnath..:

以下是在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评论.


从MySQL Server 5.7.16开始,注释掉该行将不起作用,因为它将恢复为默认值,从而禁用导入和导出操作.如果要允许来自任何目录的这些操作,现在需要将其设置为空字符串.

7> 小智..:

@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

然后,当我用它运行它时,它就起作用了。唯一的区别是斜线的方向。



8> 小智..:

我在'secure-file-priv'中遇到了同样的问题.在.ini文件中注释不起作用,也没有在'secure-file-priv'指定的目录中移动文件.

最后,正如dbc建议的那样,使'secure-file-priv'等于空字符串.因此,如果有人在尝试上面的答案后被卡住了,希望这样做会有所帮助.



9> 小智..:

对我有用的东西:

    将文件放入中指定的文件夹中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”中的数据加载到表测试中;

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有