TechTalk

docker环境下的mysql输出导出

字数统计: 263阅读时长: 1 min
2019/01/16

最近使用docker有点多,在本地mac环境下已经习惯使用docker来启动软件组件。而docker化后的mysql在导入数据方面需要执行如下的方式进行数据导出
例如docker-compose.yml配置如下:

1
2
3
4
5
6
7
8
9
10
version: '2'
2 services:
3 mysql:
4 image: mysql:5
5 ports:
6 - "127.0.0.1:33061:3306"
7 volumes:
8 - ~/lab/mysql-data:/var/lib/mysql
9 environment:
10 - MYSQL_ROOT_PASSWORD=test

启动mysql:
1
docker-compose up -d

首先确定sec-priv-file路径:

1
2
3
4
5
6
7
8
show global variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name | Value |
+--------------------------+-----------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/ |
+--------------------------+-----------------------+

路径/var/lib/mysql-files/是可以导出文件存储文件的路径。

当我们需要export一张表出来的时候,遇到导出的文件需要放在/var/lib/mysql-files/路径中:

1
2
SELECT * FROM students
INTO OUTFILE "/var/lib/mysql-files/students.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';

接下来可以把文件从/var/lib/mysql-files/拷贝到~/lab/mysql-data对应的secure_file_priv中,这样在host上就可以考到这个文件。
另外一种方式是配置secure_file_privsecure_file_priv

CATALOG