1. 程式人生 > >Linux系統--CentOS7下Mysql(docker)映象建立,使用者,表以及資料初始化

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