-
Notifications
You must be signed in to change notification settings - Fork 55
secure_file_priv
xiaoboluo768 edited this page Jun 14, 2020
·
2 revisions
- 此变量用于限制data import和export操作,例如由LOAD DATA和SELECT ... INTO OUTFILE语句和LOAD_FILE()函数的操作。这些操作只允许具有FILE权限的用户
- 该变量有如下有效值:
- 空串:如果为空,则该变量无效,这是不安全的设置
- direct name:如果设置为目录的名称,则只允许将导入和导出操作的数据存放目录限制为该值指定的目录。启动mysql时该目录必须存在,服务器不会自己创建
- null:如果设置为NULL,则将禁用导入和导出操作。从MySQL 5.6.34起允许此值(5.6.34之前的版本没有这个值)
- 在MySQL 5.6.34之前,默认情况下该变量为空。从5.6.34开始,默认值可以自己指定,源码编译时,要显式指定默认的secure_file_priv值,可以使用INSTALL_SECURE_FILE_PRIVDIR CMake选项,如果编译时没有设置这个选项,则默认情况下mysql不支持load import、export数据
- 从MySQL 5.6.34开始,服务器在启动时检查secure_file_priv的值,如果该值不安全(如设置为空串),或者该值是datadir或datadir的子目录,或所有用户可访问的目录,则会向错误日志写入警告。如果将secure_file_priv设置为不存在的路径,则服务器会将错误消息写入错误日志并退出启动
- 全局变量,只读变量,默认值5.6.33及其之前的版本为空串,5.6.34及其之后的5.6.x版本为null,5.7.5及其之前的5.7.x版本为空串,5.7.6及其之后的版本默认值为null
- PS:
- 如果load data语句使用了local子句,则客户端使用TCP远程连接mysql server时,没有file权限仍然能够导入文本文件,这个时候是非常危险的,因为local子句的内部原理是从客户端的主机读取文本文件并传送到server端的/tmp目录并保存为一个临时文件,再执行load data语句的。另外,要使用local子句,还需要看server端启动是否关闭了local_infile选项(如果不指定该选项,则服务端默认为ON),mysql client连接时是否关闭了local_infile选项(如果不指定该选项,则客户端默认为ON),local_infile在server或client端任意一端关闭都不能使用local子句,会报错误:ERROR 1148 (42000): The used command is not allowed with this MySQL version
- 如果load data语句不使用local子句,则这个时候用户必须要有file权限才能够执行导入文本文件(并且只能够导入server端的本地文本文件),如果没有file权限,可能报没有file权限的错误,也可能报错:ERROR 1045 (28000): Access denied for user 'test'@'%' (using password: YES)
- 如果不想这么麻烦(因为要限制客户端使用local子句在没有file权限的时候使用load data语句,需要在server端使用local_infile=OFF来关闭,不使用local子句时,如果用户没有file权限,那很显然不能够使用load data语句,但是如果还想限制不使用local子句但由具有file权限的用户怎么办?),可以使用参数secure_file_priv=null,设置为null时,全面禁止使用load data语句(不管使用local子句还是不使用都不允许执行load data语句)
- 该变量有如下有效值:
上一篇:skip_grant_tables | 下一篇:max_execution_time
-
本 WIKI 包含了《千金良方--MySQL 性能优化金字塔法则》一书的代码段加粗命令行命令和SQL语句文本、以及4个附录内容,其中:
- 代码段和高清图单独整理为一个系列文档,如下:
- 每个附录都各自整理成了一个小系列文档,如下:
-
《千金良方--MySQL 性能优化金字塔法则》 一书的作者信息如下:
- 李春、罗小波、董红禹
-
联系人QQ:309969177
-
提示:
-
郑重声明:本WIKI仓库中的资料为电子工业出版社与本书的三位作者共同授权开源,为了在方便大家的同时,避免不必要的纠葛,任何商业与非商业的引用、转载,麻烦大家注明出处,谢谢配合!