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.
顺序 选择 循环 总结
Mysql 命令 load data infile 权限问题的更多相关文章
- mysql 的load data infile
LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.如果指定LOCAL关键词,从客户主机读文件.如果LOCAL没指定,文件必须位于服务器上.(LOCAL在MySQL3.22. ...
- mysql数据库LOAD DATA INFILE Syntax
1.LOAD DATA INFILE用来把一个文本文件里的内容高速写入到MySQL表里,它和SELECT ... INTO FILE的操作是对应的,一个导入.一个导出.使用LOAD DATA INFI ...
- MySQL 之 LOAD DATA INFILE 快速导入数据
SELECT INTO OUTFILE > help select; Name: 'SELECT' Description: Syntax: SELECT [ALL | DISTINCT | D ...
- MySQL中load data infile将文件中的数据批量导入数据库
有时候我们需要将文件中的数据直接导入到数据库中,那么我们就可以使用load data infile,下面具体介绍使用方法. dao中的方法 @Autowired private JdbcTemplat ...
- mysql 的load data infile要使用
LOAD DATA INFILE从文本文件中读出的声明以极高的速度到表. 1.基本语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'fi ...
- mysql中load data Infile运用
速度比insert要快20倍.共享一下java程序操作. package com.mysql.csv; import java.sql.Connection; import java.sql.Driv ...
- 利用mysql的LOAD DATA INFILE的功能读取客户端文件
前言:今天在浏览某知论坛时,看到某大佬在渗透过程中使用伪造的MySQL服务端读取客户端文件,此大佬在利用过程中描述得不是很详细,作为小白的我看不懂啊,由此产生了此篇文章. 某大佬文章:https:// ...
- MySQL通过 LOAD DATA INFILE 批量导入数据
LOAD DATA INFILE 语句用法 参考手册 本文语句参数使用默认值 PHP: TP框架环境 // 定义文件路径$file_path = 'LOAD_DATA_LOCAL_INFILE.tx ...
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
随机推荐
- 响应式开发 纯CSS实现隐藏菜单栏
// 将要隐藏的菜单设置 display: block; // 然后在菜单上面设置一个点击选项,如“菜单”<label for="toggle-checkbox" id=&q ...
- Centos7安装pip或pip3
1.使用Python2安装pip wget wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip- ...
- 集合(set)
'''set是一个无序(不支持索引和切片)而且不重复的集合,有些类似于数学中的集合,也可以求交集,求并集等,''' s1={1,2,3,1} #定义一个set s1 如果s1={}为空则默认定义一个字 ...
- 大众点评评论数据抓取 反爬虫措施有css文字映射和字体库反爬虫
大众点评评论数据抓取 反爬虫措施有css文字映射和字体库反爬虫 大众点评的反爬虫手段有那些: 封ip,封账号,字体库反爬虫,css文字映射,图形滑动验证码 这个图片是滑动验证码,访问频率高的话,会出 ...
- 接口测试:postman
测试接口,postman和jmeter是用得最频繁的工具. 下面主要介绍postman测试http协议接口的用法,包含get,post(form-data,json,上传文件,cookie). pos ...
- 22-C#笔记-预编译指令
基本和C++一致. 参考: http://www.runoob.com/csharp/csharp-preprocessor-directives.html
- swiper使用总结-坑点汇总
1.开发中遇到个坑,ScrollableTabView(选项卡)+swiper(轮播图)在安卓下,初始化的第一页不会渲染,需要在ScrollableTabView挂载完毕后再渲染swiper. 解决方 ...
- input 关键字提示,对于一些特定优化来说,很有用处
只用html就可以做出提醒操作:效果如下图 这里是代码,怎么样,很简单吧 <form action="/server" method="post"> ...
- Http请求头中 X-Requested-With
String requestedWith = ((HttpServletRequest) request).getHeader("X-Requested-With"); 如果 re ...
- [RN] React Native 好用的时间线 组件
React Native 好用的时间线 组件 效果如下: 实现方法: 一.组件封装 CustomTimeLine.js "use strict"; import React, {C ...