MySQL 的「SELECT * INTO OUTFILE」指令,曾經用於出於安全原因,直接的資料擷取已受到限制。然而,「LOAD DATA LOCAL INFILE」命令仍然有效,這讓使用者想知道為什麼相應的「SELECT INTO OUTFILE LOCAL」選項不可用。
為什麼「LOAD DATA LOCAL INFILE」有效?
「LOAD DATA LOCAL INFILE」允許從託管 MySQL 的伺服器上的本機檔案匯入資料。它的功能僅限於伺服器,消除了安全性問題,這就是它仍然可用的原因。
為什麼不'SELECT INTO OUTFILE LOCAL'?
'SELECT INTO OUTFILE' 旨在將資料匯出到伺服器本身的文字檔案。但是,如果此文件用於遠端目標,則安全措施會阻止此操作。與在伺服器內操作的「LOAD DATA INFILE」不同,「SELECT INTO OUTFILE」可能允許從伺服器提取資料並將其傳輸到外部位置,從而產生安全漏洞。
替代方案方法
為了減輕這種安全風險,您可以使用「mysql」命令列工具,如原始問題中提供的範例所示。透過使用「>」將「SELECT」查詢的輸出重新導向到文件,您可以有效地將資料傳輸到本地或遠端目的地,而不會影響伺服器安全。
MariaDB 功能
MariaDB 是 MySQL 的一個分支,由於類似的安全問題,也限制了「SELECT INTO OUTFILE」指令。但是,它支援“LOAD DATA LOCAL INFILE”命令,允許從本機伺服器檔案匯入資料。
以上是為什麼 MySQL 中禁用了'SELECT * INTO OUTFILE LOCAL”,但'LOAD DATA LOCAL INFILE”仍然可用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!