1. 程式人生 > >利用docker部署mysql資料庫

利用docker部署mysql資料庫

前面兩篇部落格中,我們討論瞭如何安裝和使用docker,以及如何在docker中部署一個apache伺服器,並在外部電腦中訪問這個伺服器

下面我們來討論下如何利用docker來部署一個mysql資料庫,並在外部電腦中訪問這個資料庫:

注意:如果你對以下某些命令不瞭解,請看我的第一篇部落格

上面安裝的xampp中已經包含了mysql資料庫了,所以我就不重新安裝mysql了。

首先按照上面教程在本機電腦中安裝好xampp,並配置好.bashrc;

然後啟動剛才新建的那個映象ubuntu2,並將本機電腦的8080埠對映到容器的3306埠(mysql預設監聽3306埠):

sudo docker run –i –t –p 8080:3306 ubuntu2 /bin/bash

執行上述命令後,可進入到容器的命令列。

接著在容器命令列中輸入以下命令來啟動mysql:

/opt/lampp/lampp start
<img src="https://img-blog.csdn.net/20150529120907846?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amFuNTExNTM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

接著進入到mysql中

mysql –u root

檢視mysql中有哪些資料庫:

show databases;

開啟本機電腦的另一個命令列終端,啟動本機電腦mysql(本機電腦也要安裝xampp)

/opt/lampp/lampp start

連線到上述容器中的mysql資料庫:

mysql  -h 0.0.0.0 –P 8080  -u root
<img src="https://img-blog.csdn.net/20150529121214120?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amFuNTExNTM2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
(這裡可以用sudo docker ps來看下容器的埠對映)

引數h表示要進入哪臺機器上的msyql(host),P(大寫)表示埠號。

不出意外的話,此時就可以連線上容器中mysql了;

檢視有哪些資料庫:

show databases;

可比較下這次返回的結果和剛才的結果是否一樣。

接著新建一個數據庫:

create database helloworld;

回到容器命令列中,再次檢視有哪些資料庫:

show databases;

此時就可以看到在本機電腦中新建的那個資料庫helloworld了。

其餘對資料庫的操作也是一樣的。

到這裡,就講完了如何在docker中部署一個mysql資料庫,並在外部電腦中訪問這個資料庫。

常見問題:

1. 出現 lost connection to mysql server的錯誤:

解決方法:

首先進入到目錄(如果你的mysql是通過xampp安裝的)/opt/lampp/etc:

cd /opt/lampp/etc

然後用vim 開啟my.cnf,找到這一行:
bind-address = 127.0.0.1

將它註釋掉,如果沒有這行則忽略。

然後找到[mysqld]部分的引數,在配置後面建立一個新行,新增下面這個引數:
skip-name-resolve
儲存並退出。

接著重啟xampp:

/opt/lampp/lampp restart

到這裡應該就解決了。

如果你的Mysql不是通過xampp安裝的,則my.cnf一般在一般只會存放在/etc/my.cnf或者/etc/mysql/my.cnf下;

對my.cnf的修改跟上面的一樣,然後重啟mysql:

/etc/init.d/mysql restart

2. Host ip is not allowed to connet to this mysql server之類的錯誤

解決方法:

進入mysql:

mysql -u root

然後對其他使用者授權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

到這裡應該就解決了。

如果還沒解決,請參考這裡:http://joinyo.iteye.com/blog/1489380