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