Window10環境下在Docker中導入mysql數據

環境mysql

docker 版本: 18.09.2
windows 版本:win10,用HyperV 
命令行工具:git-bash git version 2.21.0.windows.1

  

1.在當前宿主機的目錄目錄下建立三個文件,用來與 docker 中的 mysql 鏡像進行掛載git

$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf

 

2.初始化mysql密碼並進行容器掛載,指定的容器名字若與已有的容器有衝突,可先從新命名或將有衝突的容器刪除sql

$ docker run -p 3306:3306 --name mymysql -v "/$PWD/conf":/etc/mysql/conf.d -v "/$PWD/logs":/logs -v "/$PWD/data":/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 

注意window10環境進行掛載,對宿主機的路徑要進行轉換,加上 "" 是必須的,如下一篇文章提供了不能掛載文件夾進container的解決方法,可參考docker

https://segmentfault.com/a/1190000017302478shell

參數說明:segmentfault

· -p:容器的 3306 端口映射到主機的 3306 端口。windows

· $PWD:當前的目錄路徑bash

· -v $PWD/conf:/etc/mysql/conf.d:映射配置文件工具

· -v $PWD/logs:/logs: 映射日誌文件spa

· -v $PWD/data:/var/lib/mysql:映射數據目錄

· -e MYSQL_PASSWORD="123456":初始化 root 用戶的密碼

· -d: 後臺運行容器,並返回容器ID

 

3.使用 cp 命令,將宿主機test_db目錄複製到 容器 mymysql /opt 目錄下,注意宿主機的目錄要加雙引號,否則會被認爲是另外一個容器

$ docker cp "C:\Users\CZY\mysql\data\test_db" mymysql:/opt

 

4.第二步執行後已後臺運行容器,使用 exec 命令進入容器並開啓一個shell會話(也能夠使用attach),注意整個命令前面要加上 winpty(win10中才加)

$ winpty docker exec -it mymysql bash
root@398e651dd483:/#

參數說明:

· -i :以交互模式運行容器,一般與 -t 同時使用

· -t :爲容器從新分配一個僞輸入終端,一般與 -i 同時使用

· bash :在容器內執行打開一個shell會話,執行bash命令

 

5. cd 到含有導入文件的目錄中,在進行數據導入。若不先切換補錄,則 < 後邊的數據要使用絕對路徑表示,且test_db中的 dump 文件也要使用路徑表示,否則會提示找不到文件。

另一種方法是切換到目錄後,進入mysql,而後使用 source 命令導入,但我沒能操做成功,有能操做成功的請告訴我。

root@398e651dd483:/# cd /opt/test_db

root@398e651dd483:/opt/test_db# mysql -uroot -p < employees.sql

 

6.在 shell 中進入 mysql 查看數據是否已正常導入,使用前面已經初始化的密碼

$ winpty docker exec -it mymysql bash
root@398e651dd483:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 

  

相關文章
相關標籤/搜索