mysql数据库怎么读文件_mysql数据库读写文件
环境:
centos7
mysql 5.6.47
用户:root@localhost
条件
mysql中涉及到读写操作,必然离不开secure_file_priv参数,它的值限制load data,select … outfile,load_file()函数可作用的文件位置。
secure_file_priv:
值为NULL表示禁止限制操作
值为某一目录,则只能操作该目录下的文件
没有值则表示不对读写文件进行限制
查询语句:
mysql:show global variables like "secure%";
读文件需满足条件:
1. secure_file_priv值允许对该路径下的文件进行操作
2. 当前数据库用户对文件有读权限
3. 当前数据库用户拥有file权限
查看方法举例:mysql> show grants for root@localhost;
4. 知道文件的完整路径
5. 文件大小小于max_allowed_packet。load_file()函数受到这个值的限制。
查看方法:mysql> show global variables like 'max_allowed%';
修改方法:mysql> set global max_allowed_packet = 5*1024*1024;
写文件需满足条件:
1. secure_file_priv值允许对该路径下的文件进行操作
2. 当前数据库用户对文件有写权限
3. 当前数据库用户拥有file权限
查看方法举例:mysql> show grants for root@localhost;
4. 知道文件的完整路径
5. 目标文件不存在
测试
secure_file_priv为固定值
使用system执行系统命令和load data infile语句加local选项绕过限制
注:
system执行系统命令适用版本为5.x。此方法只能在本地读取,远程连接mysql时无法使用system。无法越权读取。
--local选项使load data infile语句从客户主机读取文件
system读写文件:(强调一下system执行系统命令!)
load data local infile需要读取文件存储在数据表中:
当前数据库创建数据表:
create table mytable(file varchar(100));
secure_file_priv为空
修改/etc/my.cnf文件
[mysql]标志下面添加:secure_file_priv=’’
保存退出
重启mysql数据库:systemctl restart mysql
查看结果:
load data infile读文件
load_file()读文件:
outfile写文件:
dumpfile写文件:
限制用户使用读写函数
通过general_log和general_log_file实现文件的读写
mysql所有查询数据都会记录在general_log_file指定的文件中,有该文件的读权限。
默认general_log关闭。
因为涉及到文件的读写操作,所以还是受到secure_file_priv的限制。
打开general_log开关:
Set global general_log=’on’;
设置general_log_file储存路径:
Set global general_log_file=’/tmp/shell.php’;
写一句话:
mysql> select ‘’;
因为是一个php文件,所以其中的php一句话会被解析执行。
注意
当root用户对某些文件进行操作时会报permission denied错误
网上查询资料说是red hat系列的linux中selinux对哪些daemon可以进行怎么样的操作是有限制的,因此MySQL 负责读写的daemon同样受到selinux限制。
解决办法就是把selinux关闭。
操作办法:
修改/etc/selinux/config文件中的selinux的值为disabled。
保存后重启系统。
这种方法有人成功了,但是我没成功,因为我的config文件中selinux的值原本就是disabled(流汗)。
mysql数据库怎么读文件_mysql数据库读写文件相关推荐
- mysql数据库安全机制研究意义_MySQL数据库的安全机制
收稿日期:2001 - 12 - 30 作者简介:李书振(1965 - ) ,男 ,河南人 ,工程师 ,主要研究方向:数据库原理及应用.管理信息系统. 文章编号 :1001 - 9081(2002)0 ...
- linux mysql 实战_Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06
Linux平台MySQL多实例项目实施_MySQL数据库基础与项目实战06 视频教程学习地址 Oracle/MySQL数据库学习专用QQ群:336282998.189070296 学完风哥本课程能熟悉 ...
- python打开文件写文件乱码_Python读写文件乱码问题
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
- mysql 复制数据文件_mysql数据库搬家,可以直接复制数据库文件吗
诶?这项技术又是什么玩意(What)? 这项技术为什么会存在?我们已经有那么多解决方案(Method)了,我们为什么要用它(Why)? 如果这项技术那么好且我们正好有场景可以用到这项技术,且能使我们的 ...
- mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库
二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...
- mysql 导出dmp文件_Mysql数据库的各种命令:
一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root ...
- mysql frm ibd 创建表_MySQL数据库实现从.frm文件和.ibd文件恢复数据表方法
MySQL中.frm文件:保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关. MySQL中.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_pe ...
- mysql数据库中的opt文件是什么文件_MySQL数据库目次下面的db.opt是干什么用的?...
概述 MySQL数据库存放数据目次里的db.opt文件是MySQL建库进程中主动天生的. 仔细的友人大概会发明有时候在MySQL数据库的某些库目次下有个db.opt文件,那这个文件是干什么用的呢?要是 ...
- mysql怎么加载bak文件_MySQL数据库(表)的导入导出(备份和还原)
一)在同一个数据库服务器上面进行数据表间的数据导入导出: 1. 如果表tb1和tb2的结构是完全一样的,则使用以下的命令就可以将表tb1中的数据导入到表tb2中: insert into db2.tb ...
最新文章
- 三、前端开发-CSS
- JAVA字节码指令iload_n为什么只有0到3?
- java传值的代码_SpringMVC的简单传值(实现代码)
- 用linq查询html中div个数,C#使用Linq to XML进行XPath查询
- Drawwhile计算机软件,计算机程序设计、小女纸又怒编一程序、求鉴定、
- 刘强东:京东必定会击败阿里巴巴
- Python将函数作为闭包
- 开学第一课:一定不要这样问老师Python问题
- Apache Hadoop 源码阅读(陆续更新)
- JWPlayer快速入门指南(中文)
- ELK filebeat和logstash使用:配置单个文件来源、配置多个文件来源
- c语言运行全屏,怎么用代码控制C源程序运行时窗口是全屏的?
- 软件项目开发成本经常用到的估算方法
- 手机火狐浏览器怎么开启flash_火狐浏览器flash插件怎么启用?
- 使用Swagger生成 API 文档(go语言示例)
- 7-9 用天平找小球
- 【Mysql】InnoDB 中 B+ 树索引的注意事项
- 重新开博,短期目标,工作计划
- zsh : corrupt history file ~/.zsh_history
- 通过L0phtcrack 7进行账号口令破解
热门文章
- stl源码剖析_《STL源码剖析》学习笔记
- python怎么开始打代码_Python代码写好了怎么运行?
- 用Github做一个静态网页(GithubPages)
- 第4.17章读书笔记
- nodejs生成UID(唯一标识符)——node-uuid模块
- 对象内存布局 (15)
- LeetCode(762)——二进制表示中质数个计算置位(JavaScript)
- 计算机网络学习笔记(8. 报文交换与分组交换②)
- 【Vue2.0】— TodoList案例(十七)
- 【jQuery学习】—jQuery对象的访问