Mysql

如何在 MySql 5.5 Ubuntu 12.04 中禁用 LOCAL INFILE

  • January 6, 2013

無法在 mysql Ver 14.14 Distrib 5.5.25a 中禁用 LOCAL INFILE(出於安全原因),對於在 ubuntu 12.04 上使用 readline 6.2 的 debian-linux-gnu(i686);這是我的 /etc/mysql/my.cnf

[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
loose-local-infile=0
local-infile=0

[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
local-infile=0
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

我願意

sudo /etc/init.d/mysql restart

mysql -u root -p

mysql> SELECT load_file("/etc/passwd");

它顯示了我的 /etc/passwd 內容。所以它沒有用。

MySQL Docs for load_file reference,可以看出 load_file 是 MySQL 函式,它以字元串形式返回文件的內容。僅此而已。它與 local_infile 無關。

出於安全目的,來自相同的文件:

如果將secure_file_priv 系統變數設置為非空目錄名,則要載入的文件必須位於該目錄中。

因此,如果您設置系統變數“secure_file_priv”,則文件必須存在於該特定目錄中。此外,使用者需要文件級權限才能執行此語句。如果您希望數據庫受到保護,請不要向正在訪問數據庫的使用者授予文件級權限。

進一步的 local-infile用於LOAD DATA語句,它將數據載入到表中,從而影響表。它與 load_file() 函式無關。

引用自:https://serverfault.com/questions/419534