--secure-file-priv详解

发布时间:2023-05-18

一、secure-file-priv可以动态加载吗

在MySQL中,--secure-file-priv可以在安全模式下防止用户在加载文件时访问敏感位置。secure-file-priv的值是一个操作系统的路径,表示存储MySQL可加载文件的安全目录。在MySQL启动时,若secure-file-priv的值发生改变,MySQL并不会重新加载。因此,secure-file-priv不能动态加载,必须在启动时就指定。

/* 显示secure-file-priv路径 */
mysql> SHOW VARIABLES LIKE 'secure_file_priv';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+

二、secure-file-priv怎么用命令修改

我们可以修改MySQL配置文件中的secure-file-priv的值来改变MySQL可加载文件的安全目录。修改后需要重启MySQL生效。

/* 修改MySQL配置文件 */
$ vim /etc/my.cnf
[mysqld]
secure_file_priv=/new/path
/* 重启MySQL */
$ systemctl restart mysqld

三、secure-file-priv不对导入导出限制

secure-file-priv并不限制导入导出。但是,从MySQL 8.0.14开始,默认情况下,MySQL会检查导入文件中的全局表定义。如果检测到MyISAM表的定义,则会拒绝导入MyISAM表文件。如果要导入或导出到非默认的secure-file-priv目录,需要进行特殊的操作。

四、secure-file-priv is set null

secure-file-priv设置为null,表示MySQL可从任意目录加载文件。

/* 将secure-file-priv设置为null */
mysql> SET GLOBAL secure_file_priv=NULL;

需要注意,将secure-file-priv设置为null可能增加安全风险。因为MySQL可从任意目录加载文件,可能加载了非预期的文件。