利用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