2015-11-19 70 views
10

我已經在這個主題上搜索了一下,發現了很少的線程。基於這些線程,我遵循以下步驟。但我面臨一個問題。如何連接到主機上的Docker上運行的MySQL

基本上,我想爲mysql創建一個docker鏡像,然後從我的主機(Mac OS X)連接到它。

根據this後,我必須與主機共享mysql unix套接字。對這個我也做了以下步驟

1. Start docker quick terminal 
2. docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest 
3. docker exec -it mysql bash 
4. mysql -uroot -p 
5. create database MyDB; 
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; 
7. exit; 
8. mkdir /Users/abhi/host 
9. docker run -it -v /host:/shared mysql/mysql-server:latest 

現在我得到的錯誤

MacBook-Pro:~$ docker run -it -v /Users/abhi/host:/shared mysql/mysql-server 
error: database is uninitialized and password option is not specified 
    You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD 

但是你看,我已經提供的密碼和初始化我的數據庫。

我只想從我的主機上連接到docker中運行的mysql數據庫。

編輯:: -----解決方案的工作-------

謝謝RICO。最後,它爲我工作的步驟是

1. Start docker quick terminal 
2. docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest 
3. docker exec -it mysql bash 
4. mysql -uroot -p 
5. create database MyDB; 
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; 
7. exit; 
8. docker-machine env default 

使用中獲得的IP地址8端口爲3306,用戶是root,密碼是password,數據庫MYDB。

連接成功!

回答

13

所以你基本上你需要MySQL的端口暴露在你的主機:

mysql -h127.0.0.1 -ppassword -uroot 

不知道爲什麼你:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest 

然後你可以使用mysql命令行從您的主機訪問試圖運行另一個容器來連接(也許你的意思是連接兩個容器)

如果你使用的是Mac(或Windows)與docker-machine,你想連接到IP地址爲您的碼頭機VM。例如:

$ docker-machine ssh default 
         ##   . 
        ## ## ##  == 
       ## ## ## ## ## === 
      /"""""""""""""""""\___/ === 
     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~/===- ~~~ 
      \______ o   __/ 
      \ \   __/ 
       \____\_______/ 
_     _ ____  _   _ 
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ 
| '_ \/_ \/_ \| __| __)/_` |/ _ \/__| |//_ \ '__| 
| |_) | (_) | (_) | |_/__/ (_| | (_) | (__| < __/ | 
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| 
Boot2Docker version 1.9.0, build master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015 
Docker version 1.9.0, build 76d6bc9 
[email protected]:~$ ifconfig eth1 
eth1  Link encap:Ethernet HWaddr 08:00:27:E6:C7:20 
      inet addr:192.168.99.100 Bcast:192.168.99.255 Mask:255.255.255.0 
      inet6 addr: fe80::a00:27ff:fee6:c720/64 Scope:Link 
      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
      RX packets:18827 errors:0 dropped:0 overruns:0 frame:0 
      TX packets:10280 errors:0 dropped:0 overruns:0 carrier:0 
      collisions:0 txqueuelen:1000 
      RX bytes:1791527 (1.7 MiB) TX bytes:2242596 (2.1 MiB) 

然後連接到:

mysql -h192.168.99.100 -ppassword -uroot 
+0

這對我沒有工作。我運行了它創建圖像和容器的第一個命令。但是當我嘗試使用dbvisualizer從我的主機連接到mysql時。它說「通信失敗」。我的主機是一臺mac機器,沒有運行mysql。所以我需要使用dbvisualizer連接到在Docker容器中運行的mysql。 –

+1

@KnowsNotMuch這是因爲您在碼頭機器上使用MacOS。 Docker不能在MacOS上本地運行,請檢查我編輯的問題。 – Rico

相關問題