解决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查看死锁与解除死锁的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • mysql随机查询若干条数据的方法

    mysql随机查询若干条数据的方法

    这篇文章主要介绍了mysql中获取随机内容的方法,需要的朋友可以参考下
    2013-10-10
  • MySQL SUM()带条件的求和方法与多条件的求和方法解读

    MySQL SUM()带条件的求和方法与多条件的求和方法解读

    这篇文章主要介绍了MySQL SUM()带条件的求和方法与多条件的求和方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • MySQL数据库误删回滚的解决

    MySQL数据库误删回滚的解决

    本文主要介绍了MySQL数据库误删回滚的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • mysql非主键自增长用法实例分析

    mysql非主键自增长用法实例分析

    这篇文章主要介绍了mysql非主键自增长用法,结合实例形式分析了MySQL非主键自增长的基本设置、使用方法与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • CentOS 7.2 Yum编译安装MySQL 5.6

    CentOS 7.2 Yum编译安装MySQL 5.6

    这篇文章主要为大家介绍了CentOS 7.2 Yum编译安装MySQL 5.6详细代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • MySQL的表分区详解

    MySQL的表分区详解

    这篇文章主要介绍了MySQL的表分区,例如什么是表分区、为什么要对表进行分区、表分区的4种类型详解等,需要的朋友可以参考下
    2014-03-03
  • MySQL5.6下windows msi安装详细介绍

    MySQL5.6下windows msi安装详细介绍

    这篇文章主要介绍了MySQL5.6下windows msi安装详细介绍,介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • 详解如何避免MYSQL主从延迟带来的读写问题

    详解如何避免MYSQL主从延迟带来的读写问题

    当在主库上进行更新后,有可能数据还没来得及同步到从库,但是这个时候又有读数据的需求,为了能正确读取出数据,这个时候就只有读主库了,所以本文给大家介绍了如何避免MYSQL主从延迟带来的读写问题,需要的朋友可以参考下
    2024-03-03
  • Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)

    Mysql数据库编码问题 (修改数据库,表,字段编码为utf8)

    个人建议,数据库字符集尽量使用 utf8(HTML页面对应的是utf-8),以使你的数据能很顺利的实现迁移
    2011-10-10

最新评论