Ubuntu16.04 上MySQL 命令行导入导出编辑好的文本信息

Ubuntu16.04 上MySQL 命令行导入导出编辑好的文本信息

直接导出报错
MySQL 报错Error Code: 1290. The MySQL server is running with the --secure-file-priv option

当需要导入已存在的文本内容信息时,不需要自己写读文件的小程序;有函数支持

环境变量设置:
先使用这个命令查看变量
show databases;
use user1_facedb;
show variables like '%secure%'; 

默认是
secure_file_priv = /var/lib/mysql-files/ 
也就是只有在这个目录才有权限,操作文件;
在这个文件中可以查看默认设置/etc/apparmor.d/usr.sbin.mysqld


修改sudo vim /etc/mysql/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

secure_file_priv="/tmp/"                这一行

[mysql]
default-character-set=utf8

为什么是/tmp/呢?因为在/etc/mysql/mysql.conf.d/mysqld.cnf 文件中
有这一行
tmpdir          = /tmp

如果设置成其他目录,会出错Can’t create/write to file 


txt文本导出测试:
使用INTO OUTFILE 导出

show databases;
use user1_facedb;
select * from a20181109000001 INTO OUTFILE '/tmp/runoob.txt';
成功

joinus@joinus-All-Series:~$ ls /tmp/runoob.txt -l
-rw-rw-rw- 1 mysql mysql 1503 Nov 20 10:39 /tmp/runoob.txt

TXT文件导入出错


执行语句:
LOAD DATA INFILE 'result1.txt' INTO TABLE Transfer_Cache 
FIELDS TERMINATED BY ',';
出错:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

在文件 /etc/apparmor.d/usr.sbin.mysqld 中修改
增加
# Allow data files dir access
#  /var/lib/mysql-files/ r,
#  /var/lib/mysql-files/** rwk,
  /tmp/ r,
  /tmp/** rwk,

  
reload && restart
sudo /etc/init.d/apparmor reload
sudo /etc/init.d/mysql restart

执行语句:
LOAD DATA LOCAL INFILE '/tmp/result1.text' INTO TABLE Transfer_Cache FIELDS TERMINATED BY ',';
成功;

  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dwyane05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值