Linux系統--CentOS7下Mysql(docker)映象建立,使用者,表以及資料初始化
1.docker下載(環境為centos7)
yum install docker-engine
2.下載完成後啟動docker
使用命令:service docker start
3.為docker下載映象提速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://fe8a7d6e.m.daocloud.io
這是一個較快的國內映象
4.檔案準備
4-1.Dockerfile (檔案完整名字即Dockerfile 無後綴)
FROM mysql:5.7 #設定免密登入 ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #將所需檔案放到容器中 COPY setup.sh /Data/setup.sh COPY sqlData.sql /Data/sqlData.sql COPY changeUser.sql /Data/changeUser.sql #設定容器啟動時執行的命令 CMD ["sh", "/Data/setup.sh"]
Dockerfile 檔案設定了docker服務的執行步驟
(1)下載一個版本5.7的mysql映象;
(2)設定映象內建mysql可以免密碼登陸;(好處待會兒說) ;
(3-5)將本目錄下三個檔案複製到映象系統/Data/下;(我是root使用者登陸,初始資料夾為root)
(6)容器啟動時候執行的指令碼。(容器 映象區別自行百度)
4-2.setup.sh(shell指令碼 內容為容器啟動時執行的命令,且指令碼已複製到容器/Data/資料夾下 )
#!/bin/bash echo `service mysql status` echo '1 Service Start.....' service mysql start sleep 3 echo `service mysql status` echo '2.In data....' mysql< /Data/schema.sql sleep 3 echo '2.In user docker 123456....' mysql< /Data/changeUser.sql echo '3 ok.....' sleep 3 echo `service mysql status` echo '4 ok' tail -f /dev/null
注意點:
sleep 3 指令碼執行延遲三秒。
echo ' ' 可將''之間內容輸出 echo `` 可將``之間命令的結果返回。
service mysql start 啟動容器中mysql服務。
mysql< /Data/schema.sql 命令是呼叫mysql命令去執行sql檔案
4-3.schema.sql(此檔案用來初始化資料庫,包括建庫,建表插入資料)
create database `mydocker` default character set utf8 collate utf8_general_ci;
use docker;
這裡只是建立一個數據庫 mydocker 後面可加建表語句 並且插入資料· 隨意。
4-4.changeUser.sql
use mysql;
select host, user from user;
create user myself identified by '123123';
grant all on mydocker.* to [email protected]'%' identified by '123123' with grant option;
flush privileges;
為了初始化資料,我們之前設定了,免密登陸資料可,所以這個sql用來為sql設定一個myself使用者 密碼123123 並且將之前建立的mydocker資料庫許可權給myself使用者。
5.建立映象
docker build -t my4/docker-mysql . (.表示尋找本路徑下dockerfile檔案)
使用命令docker images 可看到建立的映象
執行容器:
docker run -i -t -p3306:3306 imagesid(我們的id可以上圖名稱代替my4/docker-mysql)
還有下一半截圖:
6.登入使用
我的主機是win10 安裝有navicate Centsos在虛擬機器
linux 使用ifconfig 可檢視虛擬機器ip。
win10下使用mavicate連線 成功0.0.
7.如果我們不需要初始化資料庫,只需要使用navicate root使用者能連線就好,我們可使用另一個指令碼檔案setup2.sh
#!/bin/bash
echo `service mysql status`
echo '1 Service Start.....'
service mysql start
sleep 3
echo `service mysql status`
echo '2.In data....'
mysql<<EOF
use mysql;
update user set password=PASSWORD("root") where user='root';
update user set host='%' where user='root';
exit;
EOF
echo 'ok'
mysql<<EOF
use mysql;
flush privileges;
exit;
EOF
echo 'ok2'
tail -f /dev/null
直接設定root使用者 登陸密碼root 然後用nacicate連線再做其他操作就可以。記得那末Dockerfile檔案也就可以去掉copy sql檔案的那幾步了。注意事項:
1.直接復我的教程檔案,念貼到虛擬機器裡有錯誤哦。dos 和linux格式問題。
.sh檔案從網上覆制過來後,在linux系統裡會出現各種問題 類似 '$\r' '\r' 找不到路徑檔案等等。在linux系統下
yum install dos2unix
dos2unix **.sh 進行轉換
2.setup2.sh裡面
update user set password=PASSWORD("root") where user='root';
update user set host='%' where user='root';
這個語句適用於5.6版本資料庫 5.7以及以上參看changeUser.sql