作为安全强化的一部分,我正在尝试禁用local_infile并阻止有人访问操作系统的本地文件。根据文档,我可以通过在my.cnf中设置变量local-infile=0
或使用选项--local-infile=0
启动mysqld服务来禁用它。但有了任何选项,我都可以加载本地文件。
我尝试在/etc/my.cnf
中首次添加
[mysqld]
local-infile=0
之后,我确认这些变化得到了反映。
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | OFF |
+---------------+-------+
1 row in set (0.00 sec)
然后,我从mysql客户端使用load_file 加载了本地文件
mysql> SELECT load_file("/etc/passwd");
上面的命令显示/etc/passwd文件的内容,即使local_infile被禁用。有人能说出这里出了什么问题吗?
从通过mysqld --local-infile=0
开始,我重复了同样的步骤,但没有改变。我也尝试过用--local-infile=0
选项启动mysql
客户端,但没有区别。
在mysql数据库中使用此查询
步骤:1
SHOW GLOBAL VARIABLES LIKE 'local_infile';
步骤:2
SET GLOBAL local_infile = 'ON';
步骤:3
SHOW GLOBAL VARIABLES LIKE 'local_infile';