作为安全加固的一部分,我试图禁用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
重复了相同的步骤,但没有改变。我也尝试使用mysql
选项启动--local-infile=0
客户端但没有区别。
答案 0 :(得分:0)
在mysql数据库中使用此查询
步骤:1
SHOW GLOBAL VARIABLES LIKE 'local_infile';
步骤:2
SET GLOBAL local_infile = 'ON';
步骤:3
SHOW GLOBAL VARIABLES LIKE 'local_infile';