解決MySQL報錯Error 3948 (42000): Loading local data is disabled問題
問題
執(zhí)行項目過程中意外出現(xiàn)的報錯,之前也沒有遇到過
報錯信息如下:
Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
翻譯如下:
排查
看報錯信息感覺是和數(shù)據庫有一定關系,網上搜索該錯誤,也都直指mysql中的一個參數(shù):local_infile
需要指定該參數(shù)為開啟狀態(tài)就可以解決問題
解決
那就廢話不多說,我們先解決問題,再去分析
查看是否開啟加載本地文件
show variables like 'local_infile';
如下圖local_infile的值為off,確實是關閉狀態(tài):
開啟全局本地文件設置
set global set local_infile=on; 或 set global set local_infile=true;
再次查看如下圖local_infile的值變?yōu)閛n,開啟狀態(tài)了:
再去執(zhí)行項目,發(fā)現(xiàn)確實沒有了報錯,成功解決!如果不需要深究原因的話,那就可以到此為止了,可以先收藏吃灰,后面有時間了再來看看!
原因分析
local_infile理解
MySQL服務端參數(shù):local_infile 用于控制MySQL Server是否允許使用LOAD DATA LOCAL INFILE命令導入存放于客戶端的數(shù)據文件。
MySQL客戶端參數(shù):–local-infile 用于控制MySQL Client是否允許使用LOAD DATA LOCAL INFILE命令導入存放于客戶端的數(shù)據文件。
mysql版本原因
mysql5.0之后的版本安裝默認設置是禁止本地批量導入和導出數(shù)據,出于安全考慮
首先確定一下我的mysql版本
select version();
如下圖是mysql 8版本,所以local_infile是關閉狀態(tài)是正常的
高版本mysql默認關閉local_infile的原因
我們知道local_infile參數(shù)的含義是將數(shù)據文件加載到表中。可以加載位于服務器主機上的文件,或者如果指定了關鍵字,則可以加載客戶端主機上的文件。
官方理解
將local_infile設置為開啟狀態(tài)會有兩個潛在的安全問題:
因為LOAD DATA LOCAL是一條SQL語句,解析發(fā)生在服務器端,文件從客戶端主機到服務器主機的傳輸是由MySQL服務器發(fā)起的,它告訴客戶端語句中命名的文件。理論上,打過補丁的服務器可以告訴客戶端程序傳輸服務器選擇的文件,而不是聲明中指定的文件。這樣的服務器可以訪問客戶端用戶具有讀取權限的客戶端主機上的任何文件。(打過補丁的服務器實際上可以用文件傳輸請求回復任何語句,而不僅僅是 LOAD DATA LOCAL,所以一個更基本的問題是客戶端不應該連接到不受信任的服務器。)
在客戶端從 Web 服務器連接的 Web 環(huán)境中,用戶可以用來 LOAD DATA LOCAL讀取 Web 服務器進程具有讀取權限的任何文件(假設用戶可以對 SQL 服務器運行任何語句)。在這種環(huán)境下,MySQL服務器的客戶端實際上是Web服務器,而不是連接到Web服務器的用戶運行的遠程程序。
簡潔理解
LOCAL_INFILE允許用戶在本地文件中讀取數(shù)據。
當LOCAL_INFILE設置為ON時,MySQL服務器允許客戶端從本地文件中讀取數(shù)據,并將其加載到MySQL表中,從而提高了MySQL服務器的性能。
MySQL 中的 local_infile 可以允許用戶將本地文件加載到 MySQL服務器中,但是它存在一些安全隱患。由于它允許在服務器上加載本地文件,因此可能存在遠程拒絕服務攻擊的風險。此外,由于加載數(shù)據的過程涉及到對服務器文件系統(tǒng)的訪問,因此也可能導致惡意的本地攻擊。
以上就是解決MySQL報錯Error 3948 (42000): Loading local data is disabled的問題的詳細內容,更多關于MySQL報錯Error 3948 (42000)的資料請關注腳本之家其它相關文章!
- 解決遠程連接MySQL報錯:2003 - Can‘t connect to MySQL server on ‘X.X.X.X‘ (10060 “Unknown error“)問題
- mysql啟動時報錯:error while loading shared libraries: libncurses.so.5: cannot open shared object file的解決辦法
- windows上的mysql服務突然消失提示10061 Unkonwn error問題及解決方案
- 關于Mysql插入中文字符報錯ERROR 1366(HY000)的解決方法
- 解決xmapp啟動mysql出現(xiàn)Error: MySQL shutdown unexpectedly.問題
- Mysql ERROR 1067: Invalid default value for字段問題
相關文章
深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵
這篇文章主要介紹了深入分析mysql為什么不推薦使用uuid或者雪花id作為主鍵,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09MySQL實現(xiàn)創(chuàng)建存儲過程并循環(huán)添加記錄的方法
這篇文章主要介紹了MySQL實現(xiàn)創(chuàng)建存儲過程并循環(huán)添加記錄的方法,涉及基本的mysql存儲過程創(chuàng)建、調用相關操作技巧,需要的朋友可以參考下2017-05-05關于MySql數(shù)據庫Update批量更新不同值的實現(xiàn)方法
這篇文章主要介紹了關于MySql數(shù)據庫Update批量更新不同值的實現(xiàn)方法,數(shù)據庫管理系統(tǒng)可以通過SQL管理數(shù)據庫,定義和操作數(shù)據,維護數(shù)據的完整性和安全性,需要的朋友可以參考下2023-05-05MySQL聯(lián)合查詢之輕松實現(xiàn)數(shù)據關聯(lián)詳解
MySQL中當查詢數(shù)據來自多張表時需要用到關聯(lián)查詢,下面這篇文章主要給大家介紹了關于MySQL聯(lián)合查詢之輕松實現(xiàn)數(shù)據關聯(lián)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06