load data local 帶來的安全問題:
由MySQL 服務器啟動文件從客戶端向服務器主機的傳輸。理論上,打過補丁的服務器可以告訴客戶端程序傳輸服務器選擇的文件,而不是客戶用LOAD DATA 語句指定的文件。這樣服務器可以訪問客戶端上客戶有讀訪問權限的任何文件。
在Web 環境中,客戶從Web 服務器連接,用戶可以使用LOAD DATA LOCAL 來讀取Web 服務器進程有讀訪問權限的任何文件(假定用戶可以運行SQL 服務器的任何命令)。在這種環境中,MySQL 服務器的客戶實際上是Web 服務器,而不是連接Web 服務器的用戶運行的程序。
解決方法:
可以用--local-infile=0 選項啟動MySQLd 從服務器端禁用所有LOAD DATA
LOCAL 命令。
對於mysql 命令行客戶端,可以通過指定--local-infile[=1]選項啟用LOAD DATA LOCAL,或通過--local-infile=0 選項禁用。類似地,對於MySQLimport,--local or -L 選項啟用本地數據文件裝載。在任何情況下,成功進行本地裝載需要服務器啟用相關選項。