我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:
LOAD DATA INFILE "text.txt" INTO table mytable;
我得到了以下错误:
MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句
如何解决这个错误?
我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。
我使用的是MySQL 5.6
我正在学习MySQL,并尝试使用LOAD DATA子句。当我使用它时,如下所示:
LOAD DATA INFILE "text.txt" INTO table mytable;
我得到了以下错误:
MySQL服务器正在使用——secure-file-priv选项运行,所以它不能执行这条语句
如何解决这个错误?
我已经检查了关于相同错误信息的另一个问题,但仍然找不到解决方案。
我使用的是MySQL 5.6
当前回答
对我有用的是:
Put your file inside of the folder specified in secure-file-priv. To find that type: mysql> show variables like "secure_file_priv"; Check if you have local_infile = 1. Do that typing: mysql> show variables like "local_infile"; If you get: +---------------+-------+ | Variable_name | Value | +---------------+-------+ | local_infile | OFF | +---------------+-------+ Then set it to one typing: mysql> set global local_infile = 1; Specify the full path for your file. In my case: mysql> load data infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/file.txt" into table test;
其他回答
@vhu我做了SHOW变量像“secure_file_priv”;它返回C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\所以当我插入它时,它仍然不工作。
当我直接打开my.ini文件时,我发现路径的格式有点不同:
C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
当我用它运行时,它工作了。唯一不同的是斜线的方向。
MySQL使用这个系统变量来控制导入文件的位置
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |
+------------------+-------+
所以问题是如何改变系统变量,如secure_file_priv。
关闭mysqld Sudo mysqld_safe——secure_file_priv=""
现在你可能会看到:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+
它正在按预期工作。你的MySQL服务器已经启动了——secure-file-priv选项,该选项限制你可以使用load DATA INFILE从哪个目录加载文件。
使用SHOW VARIABLES LIKE "secure_file_priv";查看已配置的目录。
你有两个选择:
将文件移动到secure-file-priv指定的目录。 禁用secure-file-priv。必须从启动时删除,并且不能动态修改。要做到这一点,请检查MySQL启动参数(取决于平台)和my.ini。
在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=
谢谢
我正在Debian上的MySQL5.7.11上工作,为我工作的命令是:
mysql> SELECT @@global.secure_file_priv;