標籤: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="http://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="http://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
利用docker部署mysql資料庫