Mysql
如何在 MySql 5.5 Ubuntu 12.04 中禁用 LOCAL INFILE
無法在 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() 函式無關。