解决MySQL报错Error 3948 (42000): Loading local data is disabled问题

 更新时间:2023年09月06日 11:05:50   作者:鲲志说  
在执行MySQL项目过程中意外出现的报错,之前也没有遇到过,报错信息如下,Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an,本文小编就给大家介绍一下解决报错的方法,需要的朋友可以参考下

问题

执行项目过程中意外出现的报错,之前也没有遇到过
报错信息如下:

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

翻译如下:

排查

看报错信息感觉是和数据库有一定关系,网上搜索该错误,也都直指mysql中的一个参数:local_infile

需要指定该参数为开启状态就可以解决问题

解决

那就废话不多说,我们先解决问题,再去分析

查看是否开启加载本地文件

show variables like 'local_infile';

如下图local_infile的值为off,确实是关闭状态:

开启全局本地文件设置

 set global set local_infile=on;
 或
 set global set local_infile=true;

再次查看如下图local_infile的值变为on,开启状态了:

再去执行项目,发现确实没有了报错,成功解决!如果不需要深究原因的话,那就可以到此为止了,可以先收藏吃灰,后面有时间了再来看看!

原因分析

local_infile理解

MySQL服务端参数:local_infile 用于控制MySQL Server是否允许使用LOAD DATA LOCAL INFILE命令导入存放于客户端的数据文件。
MySQL客户端参数:–local-infile 用于控制MySQL Client是否允许使用LOAD DATA LOCAL INFILE命令导入存放于客户端的数据文件。

mysql官方解释:local_infile:

mysql版本原因

mysql5.0之后的版本安装默认设置是禁止本地批量导入和导出数据,出于安全考虑

首先确定一下我的mysql版本

select version();

如下图是mysql 8版本,所以local_infile是关闭状态是正常的

高版本mysql默认关闭local_infile的原因

我们知道local_infile参数的含义是将数据文件加载到表中。可以加载位于服务器主机上的文件,或者如果指定了关键字,则可以加载客户端主机上的文件。

官方理解

将local_infile设置为开启状态会有两个潜在的安全问题:

  1. 因为LOAD DATA LOCAL是一条SQL语句,解析发生在服务器端,文件从客户端主机到服务器主机的传输是由MySQL服务器发起的,它告诉客户端语句中命名的文件。理论上,打过补丁的服务器可以告诉客户端程序传输服务器选择的文件,而不是声明中指定的文件。这样的服务器可以访问客户端用户具有读取权限的客户端主机上的任何文件。(打过补丁的服务器实际上可以用文件传输请求回复任何语句,而不仅仅是 LOAD DATA LOCAL,所以一个更基本的问题是客户端不应该连接到不受信任的服务器。)

  2. 在客户端从 Web 服务器连接的 Web 环境中,用户可以用来 LOAD DATA LOCAL读取 Web 服务器进程具有读取权限的任何文件(假设用户可以对 SQL 服务器运行任何语句)。在这种环境下,MySQL服务器的客户端实际上是Web服务器,而不是连接到Web服务器的用户运行的远程程序。

简洁理解

LOCAL_INFILE允许用户在本地文件中读取数据。
当LOCAL_INFILE设置为ON时,MySQL服务器允许客户端从本地文件中读取数据,并将其加载到MySQL表中,从而提高了MySQL服务器的性能。

MySQL 中的 local_infile 可以允许用户将本地文件加载到 MySQL服务器中,但是它存在一些安全隐患。由于它允许在服务器上加载本地文件,因此可能存在远程拒绝服务攻击的风险。此外,由于加载数据的过程涉及到对服务器文件系统的访问,因此也可能导致恶意的本地攻击。

以上就是解决MySQL报错Error 3948 (42000): Loading local data is disabled的问题的详细内容,更多关于MySQL报错Error 3948 (42000)的资料请关注脚本之家其它相关文章!

相关文章

  • 浅析MySQL数据的导出与导入知识点

    浅析MySQL数据的导出与导入知识点

    在本文里我们给大家分享了关于MySQL数据的导出与导入的相关实例和知识点内容,需要的朋友们跟着学习下。
    2019-03-03
  • MySQL性能优化之如何高效正确的使用索引

    MySQL性能优化之如何高效正确的使用索引

    这篇文章主要介绍了MySQL如何高效正确的使用索引,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL占用CPU过高排查过程及可能优化方案

    MySQL占用CPU过高排查过程及可能优化方案

    这篇文章主要介绍了MySQL占用CPU过高排查过程及可能优化方案,具有很好的参考价值,希望对大家的学习或工作有所帮助,感兴趣的朋友可以参考下
    2024-01-01
  • MySQL主备操作以及原理详解

    MySQL主备操作以及原理详解

    本文主要介绍了MySQL主备操作以及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Mysql实现模糊查询的两种方式(like子句 、正则表达式)

    Mysql实现模糊查询的两种方式(like子句 、正则表达式)

    通配符是一种特殊语句,主要用来模糊查询,下面这篇文章主要给大家介绍了关于给Mysql实现模糊查询的两种方式,分别是like子句 、正则表达式,需要的朋友可以参考下
    2022-09-09
  • 数据库实现行列转换(mysql示例)

    数据库实现行列转换(mysql示例)

    最近突然玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”。起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”。那么,在Mysql环境下如何处理?下面通过这篇文章我们来一起看看吧。
    2016-12-12
  • 详解mysql慢日志查询

    详解mysql慢日志查询

    这篇文章主要介绍了mysql慢日志查询的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-09-09
  • mysql中文排序注意事项与实现方法

    mysql中文排序注意事项与实现方法

    mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上"binary"属性,使之作二进制比较
    2008-09-09
  • mysql 8.0.22 安装配置图文教程

    mysql 8.0.22 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.22 安装配置图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析

    浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析

    MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的
    2013-06-06

最新评论