admin管理员组文章数量:1032047
mysql:Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an
问题
执行项目过程中意外出现的报错,之前也没有遇到过 报错信息如下:
代码语言:javascript代码运行次数:0运行复制Error 3948 (42000): Loading local data is disabled;
this must be enabled on both the client and server sides
翻译如下:
排查
看报错信息感觉是和数据库有一定关系,网上搜索该错误,也都直指mysql中的一个参数:local_infile
需要指定该参数为开启状态就可以解决问题
解决
那就废话不多说,我们先解决问题,再去分析
查看是否开启加载本地文件
代码语言:javascript代码运行次数:0运行复制show variables like 'local_infile';
如下图local_infile的值为off,确实是关闭状态:
开启全局本地文件设置
代码语言:javascript代码运行次数:0运行复制 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版本
代码语言:javascript代码运行次数:0运行复制select version();
如下图是mysql 8版本,所以local_infile是关闭状态是正常的
高版本mysql默认关闭local_infile的原因
我们知道local_infile参数的含义是将数据文件加载到表中。可以加载位于服务器主机上的文件,或者如果指定了关键字,则可以加载客户端主机上的文件。
官方理解
将local_infile设置为开启状态会有两个潜在的安全问题:
- 因为LOAD DATA LOCAL是一条SQL语句,解析发生在服务器端,文件从客户端主机到服务器主机的传输是由MySQL服务器发起的,它告诉客户端语句中命名的文件。理论上,打过补丁的服务器可以告诉客户端程序传输服务器选择的文件,而不是声明中指定的文件。这样的服务器可以访问客户端用户具有读取权限的客户端主机上的任何文件。(打过补丁的服务器实际上可以用文件传输请求回复任何语句,而不仅仅是 LOAD DATA LOCAL,所以一个更基本的问题是客户端不应该连接到不受信任的服务器。)
- 在客户端从 Web 服务器连接的 Web 环境中,用户可以用来 LOAD DATA LOCAL读取 Web 服务器进程具有读取权限的任何文件(假设用户可以对 SQL 服务器运行任何语句)。在这种环境下,MySQL服务器的客户端实际上是Web服务器,而不是连接到Web服务器的用户运行的远程程序。
简洁理解
感谢老哥的支持与高度概括:bluetata
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-03-10,如有侵权请联系 cloudcommunity@tencent 删除localmysqlclientdataloadingLOCAL_INFILE允许用户在本地文件中读取数据。 当LOCAL_INFILE设置为ON时,MySQL服务器允许客户端从本地文件中读取数据,并将其加载到MySQL表中,从而提高了MySQL服务器的性能。
MySQL 中的 local_infile 可以允许用户将本地文件加载到 MySQL服务器中,但是它存在一些安全隐患。由于它允许在服务器上加载本地文件,因此可能存在远程拒绝服务攻击的风险。此外,由于加载数据的过程涉及到对服务器文件系统的访问,因此也可能导致恶意的本地攻击。
mysql:Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an
问题
执行项目过程中意外出现的报错,之前也没有遇到过 报错信息如下:
代码语言:javascript代码运行次数:0运行复制Error 3948 (42000): Loading local data is disabled;
this must be enabled on both the client and server sides
翻译如下:
排查
看报错信息感觉是和数据库有一定关系,网上搜索该错误,也都直指mysql中的一个参数:local_infile
需要指定该参数为开启状态就可以解决问题
解决
那就废话不多说,我们先解决问题,再去分析
查看是否开启加载本地文件
代码语言:javascript代码运行次数:0运行复制show variables like 'local_infile';
如下图local_infile的值为off,确实是关闭状态:
开启全局本地文件设置
代码语言:javascript代码运行次数:0运行复制 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版本
代码语言:javascript代码运行次数:0运行复制select version();
如下图是mysql 8版本,所以local_infile是关闭状态是正常的
高版本mysql默认关闭local_infile的原因
我们知道local_infile参数的含义是将数据文件加载到表中。可以加载位于服务器主机上的文件,或者如果指定了关键字,则可以加载客户端主机上的文件。
官方理解
将local_infile设置为开启状态会有两个潜在的安全问题:
- 因为LOAD DATA LOCAL是一条SQL语句,解析发生在服务器端,文件从客户端主机到服务器主机的传输是由MySQL服务器发起的,它告诉客户端语句中命名的文件。理论上,打过补丁的服务器可以告诉客户端程序传输服务器选择的文件,而不是声明中指定的文件。这样的服务器可以访问客户端用户具有读取权限的客户端主机上的任何文件。(打过补丁的服务器实际上可以用文件传输请求回复任何语句,而不仅仅是 LOAD DATA LOCAL,所以一个更基本的问题是客户端不应该连接到不受信任的服务器。)
- 在客户端从 Web 服务器连接的 Web 环境中,用户可以用来 LOAD DATA LOCAL读取 Web 服务器进程具有读取权限的任何文件(假设用户可以对 SQL 服务器运行任何语句)。在这种环境下,MySQL服务器的客户端实际上是Web服务器,而不是连接到Web服务器的用户运行的远程程序。
简洁理解
感谢老哥的支持与高度概括:bluetata
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2023-03-10,如有侵权请联系 cloudcommunity@tencent 删除localmysqlclientdataloadingLOCAL_INFILE允许用户在本地文件中读取数据。 当LOCAL_INFILE设置为ON时,MySQL服务器允许客户端从本地文件中读取数据,并将其加载到MySQL表中,从而提高了MySQL服务器的性能。
MySQL 中的 local_infile 可以允许用户将本地文件加载到 MySQL服务器中,但是它存在一些安全隐患。由于它允许在服务器上加载本地文件,因此可能存在远程拒绝服务攻击的风险。此外,由于加载数据的过程涉及到对服务器文件系统的访问,因此也可能导致恶意的本地攻击。
本文标签: mysqlError 3948 (42000) Loading local data is disabled this must be enabled on both the client an
版权声明:本文标题:mysql:Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747854706a2218062.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论