我应该如何解决–secure-file-priv在MySQL中?

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

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

我得到了以下错误:

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

我如何处理这个错误?

我已经检查了同样的错误消息的另一个问题 ,但仍然无法find解决scheme。

我正在使用MySQL 5.6

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

您可以使用SHOW VARIABLES LIKE "secure_file_priv"; 查看已configuration的目录。

你有两个select:

  1. 将您的文件移动到secure-file-priv指定的目录。
  2. 禁用secure-file-priv 。 这必须从启动中删除,不能dynamic修改。 要做到这一点检查你的MySQL启动参数(取决于平台)和my.ini。

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

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

你可以在这里find更多的信息http://dev.mysql.com/doc/refman/5.7/en/load-data.html

如果指定了LOCAL,则该文件由客户端主机上的客户端程序读取并发送到服务器。 该文件可以作为完整的path名来指定它的确切位置。 如果以相对path名称的forms给出,则该名称将相对于客户机程序启动的目录进行解释。

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

 [mysqld] secure-file-priv = "" 

我正在研究Debian上的MySQL5.7.11,这个命令让我看到了这个目录:

mysql> SELECT @@ global.secure_file_priv;

这是什么在Windows 7中为我工作,以禁用secure-file-priv ( vhu的答案选项#2):

  1. 通过进入services.msc停止MySQL服务器服务。
  2. 转到C:\ProgramData\MySQL\MySQL Server 5.6 (在我的情况下, ProgramData是一个隐藏文件夹)。
  3. 在记事本中打开my.ini文件。
  4. search'secure-file-priv'。
  5. 在行首添加“#”来注释行。
  6. 保存文件。
  7. 进入services.msc启动MySQL服务器服务。

对于MySQL Server 5.7.16及以上版本,请参考下面的dbc的注释。

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

最后,按照dbc的build议,使'secure-file-priv'等于一个空string。 所以如果有人在尝试上面的答案后卡住,希望这样做会有所帮助。

我有这方面的各种问题。 我正在改变my.cnf以及这个问题的其他版本试图展示的各种疯狂的东西。

什么对我有效:

我得到的错误

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

我可以通过打开/usr/local/mysql/support-files/mysql.server并更改以下行来修复它:

 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 

 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 

我在Windows 10上有这个问题。“–secure-file-priv在MySQL中”为了解决这个问题,我做了以下工作。

  1. 在Windowssearch(左下angular),我input“powershell”。
  2. 右键单击PowerShell并以pipe理员身份运行。
  3. 导航到服务器bin文件。 (C:\ Program Files \ MySQL \ MySQL Server 5.6 \ bin);
  4. 键入./mysqld
  5. 点击“进入”

服务器按预期启动。