mysql如何配置secure_file_priv
作者:半桶水专家
这篇文章主要介绍了mysql如何配置secure_file_priv问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
mysql配置secure_file_priv
1、secure_file_priv 配置项控制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()的使用权限。
- secure_file_priv 设置值为 NULL 时,表示限制mysqld不允许导入或导出。
- secure_file_priv 设置值为 /dir目录时,表示限制mysqld只能在/dir目录中执行导入导出,其他目录不能执行。
- secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出,不建议这么设置,不安全。
2、可以使用show variables like 'secure_file_priv'查看配置参数值
3、secure_file_priv不能使用set global 方式修改,需要再my.ini或my.conf配置文件中修改,重启mysql服务后生效
mysql secure_file_priv属性相关的文件读写权限
问题复现
执行以下sql 导出数据时,出现安全问题。
select * from a_test into outfile 'd:/ent.txt' ;
异常信息
查询:
查询:select * from a_test into outfile 'd:/ent.txt'
错误代码: 1290
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
查询 secure_file_priv 的值
show global variables like '%secure%';
查询结果
Variable_name | VALUE |
require_secure_transport | OFF |
secure_file_priv | C:\\ProgramData\\MySQL\\MySQL SERVER 8.0\\Uploads\\ |
secure_file_priv 参数解析:
参数值 | 说明 |
null | 不允许导入导出 |
指定文件夹( C:\\ProgramData\\.. ) | mysql的导入导出只能发生在指定的文件夹 |
secure_file_priv 不设置 | 没有任何限制 |
解决方式
设置secure-file-priv为空,就不会对导入导出的文件位置进行限制了
在mysql.ini文件修改
secure-file-priv=
修改完成后,重启 MySQL服务,重新执行就能执行成功
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。