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 ',';
成功;