最近使用docker有点多,在本地mac环境下已经习惯使用docker来启动软件组件。而docker化后的mysql在导入数据方面需要执行如下的方式进行数据导出
例如docker-compose.yml
配置如下:1
2
3
4
5
6
7
8
9
10version: '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
8show 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
2SELECT * 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_priv
为secure_file_priv
。