Mysql 命令 load data infile 权限问题

【1】Mysql命令load data infile 执行权限问题

工作中,经常会遇到往线上环境mysql数据库批量导入源数据的场景。

针对这个场景问题,mysql有一个很高效的命令:load data infile

通过load data infile命令将data_file文件数据导入表中。

当然,因为mysql数据库权限限制的问题,分为以下几种情况:

(1)root用户(特指mysql的root,非Linux系统的root)

在mysql server部署机器通过load data infile命令导入数据时,只要文件路径指定正确,一般不会有问题。

如果导入失败,请参见随笔《Mysql 导入文件提示 --secure-file-priv option 问题

(2)非root用户在mysql server部署机器通过load data infile命令导入数据时,报错:

ERROR 1045 (28000): Access denied for user 'xxx'@'xxx' (using password: YES)

这个错误一般是因为非root用户没有FILE Privilege权限,查询当前用户权限可参见随笔《Mysql 用户及权限

两种解决方案:

[1] 命令加local参数。用load data local infile 'filename' into table 来导入数据(强烈推荐使用)

[2] 为当前用户开通权限。给当前用户开通FILE Privilege权限时,注意:

FILE权限与SELECE/DELETE/UPDATE等不同,后者是可以具体指定到某个db的某个表的,而FILE则是全局的,

即只能通过grant FILE on *.* to 'abcde'@'%'才能使FILE权限对所有db的所有tables生效。

通过grant all on db.* to 'abcde'@'%'不能使指定的user在指定的db上具有FILE权限。

根据最小权限原则(操作系统安全的概念),这个方法并不安全,故不推荐使用。

(3)非root用户从client机器load data local infile至remote mysql server时,报错:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

可能原因(from mysql reference manual):

If LOAD DATA LOCAL is disabled, either in the server or the client, a client that attempts to issue such a statement receives the following error message:

ERROR 1148: The used command is not allowed with this MySQL version

可见,出于安全考虑,默认是不允许从client host远程通过load data命令导数据的

解决办法:

For the mysql command-line client, enable LOAD DATA LOCAL by specifying the --local-infile[=1]option, or disable it with the --local-infile=0 option

也即,在需要从client host导人数据的场景下,当登陆mysql时,需用--local-infile[=1]显式指定参数,典型命令形式为:

mysql --local-infile -u user -p passwd

登陆成功后,再执行load data infile 'filename' into table即可。

 

Good Good Study, Day Day Up.

顺序 选择 循环 总结

posted @   kaizenly  阅读(12167)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2014-08-26 策略模式
2014-08-26 简单工厂模式
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示