2015-04-01 86 views
1

作爲安全加固的一部分,我試圖禁用local_infile並阻止某人訪問操作系統的本地文件。根據文檔,我可以通過在my.cnf中設置變量local-infile=0或使用選項--local-infile=0啓動mysqld服務來禁用它。但有了任何選項,我可以加載本地文件。爲什麼MySQL禁用加載本地infile不起作用?

我第一次嘗試在/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有人disabled.Can告訴是怎麼回事這裏錯了嗎?

我重複了相同的步驟從傳遞mysqld --local-infile=0但沒有變化。我也嘗試mysql客戶端與--local-infile=0選項,但沒有區別。

回答

0

使用此查詢在你的MySQL數據庫

步驟:1

SHOW GLOBAL VARIABLES LIKE 'local_infile'; 

第2步:

SET GLOBAL local_infile = 'ON'; 

STEP:3

SHOW GLOBAL VARIABLES LIKE 'local_infile'; 
+0

我的本意是禁止local_infile並阻止某人訪問操作系統本地文件。 – Renjith 2015-04-01 13:59:35

+0

我不認爲這回答了原來的問題! – 2017-12-03 17:57:02