欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決MySQL報錯Error 3948 (42000): Loading local data is disabled問題

 更新時間:2023年09月06日 11:05:50   作者:鯤志說  
在執(zhí)行MySQL項目過程中意外出現(xiàn)的報錯,之前也沒有遇到過,報錯信息如下,Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an,本文小編就給大家介紹一下解決報錯的方法,需要的朋友可以參考下

問題

執(zhí)行項目過程中意外出現(xiàn)的報錯,之前也沒有遇到過
報錯信息如下:

Error 3948 (42000): Loading local data is disabled; 
this must be enabled on both the client and server sides

翻譯如下:

排查

看報錯信息感覺是和數(shù)據(jù)庫有一定關(guān)系,網(wǎng)上搜索該錯誤,也都直指mysql中的一個參數(shù):local_infile

需要指定該參數(shù)為開啟狀態(tài)就可以解決問題

解決

那就廢話不多說,我們先解決問題,再去分析

查看是否開啟加載本地文件

show variables like 'local_infile';

如下圖local_infile的值為off,確實是關(guān)閉狀態(tài):

開啟全局本地文件設(shè)置

 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服務(wù)端參數(shù):local_infile 用于控制MySQL Server是否允許使用LOAD DATA LOCAL INFILE命令導(dǎo)入存放于客戶端的數(shù)據(jù)文件。
MySQL客戶端參數(shù):–local-infile 用于控制MySQL Client是否允許使用LOAD DATA LOCAL INFILE命令導(dǎo)入存放于客戶端的數(shù)據(jù)文件。

mysql官方解釋:local_infile:

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ù)器主機上的文件,或者如果指定了關(guān)鍵字,則可以加載客戶端主機上的文件。

官方理解

將local_infile設(shè)置為開啟狀態(tài)會有兩個潛在的安全問題:

  1. 因為LOAD DATA LOCAL是一條SQL語句,解析發(fā)生在服務(wù)器端,文件從客戶端主機到服務(wù)器主機的傳輸是由MySQL服務(wù)器發(fā)起的,它告訴客戶端語句中命名的文件。理論上,打過補丁的服務(wù)器可以告訴客戶端程序傳輸服務(wù)器選擇的文件,而不是聲明中指定的文件。這樣的服務(wù)器可以訪問客戶端用戶具有讀取權(quán)限的客戶端主機上的任何文件。(打過補丁的服務(wù)器實際上可以用文件傳輸請求回復(fù)任何語句,而不僅僅是 LOAD DATA LOCAL,所以一個更基本的問題是客戶端不應(yīng)該連接到不受信任的服務(wù)器。)

  2. 在客戶端從 Web 服務(wù)器連接的 Web 環(huán)境中,用戶可以用來 LOAD DATA LOCAL讀取 Web 服務(wù)器進(jìn)程具有讀取權(quán)限的任何文件(假設(shè)用戶可以對 SQL 服務(wù)器運行任何語句)。在這種環(huán)境下,MySQL服務(wù)器的客戶端實際上是Web服務(wù)器,而不是連接到Web服務(wù)器的用戶運行的遠(yuǎn)程程序。

簡潔理解

LOCAL_INFILE允許用戶在本地文件中讀取數(shù)據(jù)。
當(dāng)LOCAL_INFILE設(shè)置為ON時,MySQL服務(wù)器允許客戶端從本地文件中讀取數(shù)據(jù),并將其加載到MySQL表中,從而提高了MySQL服務(wù)器的性能。

MySQL 中的 local_infile 可以允許用戶將本地文件加載到 MySQL服務(wù)器中,但是它存在一些安全隱患。由于它允許在服務(wù)器上加載本地文件,因此可能存在遠(yuǎn)程拒絕服務(wù)攻擊的風(fēng)險。此外,由于加載數(shù)據(jù)的過程涉及到對服務(wù)器文件系統(tǒng)的訪問,因此也可能導(dǎo)致惡意的本地攻擊。

以上就是解決MySQL報錯Error 3948 (42000): Loading local data is disabled的問題的詳細(xì)內(nèi)容,更多關(guān)于MySQL報錯Error 3948 (42000)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論