在我们的项目中有一个功能就是对数据库数据进行backup,今天在使用这个功能时报错,"The MySQL server is running with the --secure-file-priv option so it cannot execute this statement"
出现这个问题的原因是mysql默认导出路径'secure_file_priv'不匹配。
使用命令:show variables like '%secure%';
查看当前secure_file_priv的值如下:
而在我们的代码中将
使用select * from table into outfile 'custem_path'; 重新自定义的一个新的路径,导致报这个错误;
为什么自定义重新导向另外一个路径就会报错呢?由于'secure_file_priv'一旦配置了特定的导出路径,就必须导出到这个路径下,否则就会报错。如果我们需要将数据导出到自定义的一个路径,就需要再mysql的 配置文件下添加
secure_file_priv = 'custem_path'
这样配置表示不对mysql的导入导出的路径做限制。
修改这些配置文件后,重启mysql服务,即可。注意是要重启服务。
关于'secure_file_priv'配置的几个值的说明:
-
secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
-
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
-
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
mysql的配置文件在不同环境下文件名不同:
- window 环境下是my.ini文件,一般路径:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
- linux 环境下一般在/etc/my.cnf