为什么MySQL禁用加载本地infile不起作用?

时间:2015-04-01 13:48:44

标签: mysql linux security

作为安全加固的一部分,我试图禁用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客户端但没有区别。

1 个答案:

答案 0 :(得分:0)

在mysql数据库中使用此查询

步骤:1

  SHOW GLOBAL VARIABLES LIKE 'local_infile';

步骤:2

SET GLOBAL local_infile = 'ON';

步骤:3

 SHOW GLOBAL VARIABLES LIKE 'local_infile';