我在Windows 10计算机上运行MySQL 5.7。我已经阅读了有关此主题的所有SO主题,但仍然无法弄清楚如何加载我的数据并克服此错误:
Error Code: 1290. The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
我有1)检查设置以更改它们以便能够从我保存数据集的目录中加载,2)以管理员身份打开MySQL并检查命令行并确认安全文件确实指向我的目录,3)并在init文件中确认它指向包含我的文件的正确目录。我尝试更改数据集的位置,以便它在新文件夹中并确认已使用上述方法移动到那里,但它仍然无效。
欢迎任何和所有帮助,谢谢。
答案 0 :(得分:11)
我无法重现这个问题。
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.13 |
+-----------+
1 row in set (0,00 sec)
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| NULL |
+---------------------------+
1 row in set (0,00 sec)
-- USE ...
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
更改档案:/etc/mysql/my.cnf
[mysqld]
.
.
.
secure_file_priv=/var/lib/mysql-files/
.
.
.
重启MySQL。
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/ |
+---------------------------+
1 row in set (0,00 sec)
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
Query OK, 3 rows affected (0,00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
答案 1 :(得分:4)
在MACOSX上将.my.cnf添加到您的主目录中,内容为:
[mysqld_safe]
[mysqld]
secure_file_priv=""
答案 2 :(得分:3)
这在MacOs Sierra 10.12.6中有效:
使用命令
mysql --help | more
,然后在其中写一行:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf
~/.my.cnf
在我的情况下,我尝试在主目录中创建my.cnf,但是它没有用。我发现的唯一解决方案是使用
在文件夹等中创建文件sudo vim /etc/my.cnf
并放入其中
[mysqld_safe]
[mysqld]
secure-file-priv = ""
然后您可以检查所有内容是否都可以使用
select @@GLOBAL.secure_file_priv;
在mysql内并检查该值是否为空并且与NULL不同。
最后将文件保存在目录/ tmp中,然后将其移动到所需的目录中。或者(但可能不安全)使用
chmod 1777 dir
其中dir是您在其中写入文件的目录的名称。
答案 3 :(得分:1)
请注意,在Windows下,将'secure_file_priv'设置为其他路径,或者将其设置为以下方式完全禁用它:
secure_file_priv=""
如果MySQL服务在低权限帐户(默认5.7安装)上运行,则可能不起作用。您可以通过在“属性”->“登录”下的“服务”中选择“本地系统帐户”来更改该设置。
答案 4 :(得分:0)