2015-11-19 2 views
10

Я уже искал эту тему и нашел несколько тем. Основываясь на этих потоках, я выполнил следующие шаги. Но я столкнулся с проблемой.Как подключиться к MySQL, работающему на Docker с главной машины

В принципе, я хочу создать изображение докера для mysql, а затем подключиться к нему с моего хост-компьютера (Mac OS X).

Основываясь на сообщении this, мне нужно разделить сокет unix mysql с хостом. к этому я сделал следующие шаги

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 

Но вы видите, что я предоставил пароль и инициализируется свою базу данных.

Все, что я хочу, это то, что с моей главной машины я могу подключиться к базе данных mysql, работающей внутри докеров.

EDIT :: ----- решение, которое работало ------

Благодаря 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, пользователь корень, пароль пароль, база данных MyDB.

Связь прошла успешно!

ответ

13

Таким образом, вы в основном вы должны выставить MySQL порт для хоста:

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

Тогда вы можете получить доступ с вашего хоста с помощью команды MySQL строки:

mysql -h127.0.0.1 -ppassword -uroot 

Не знаю, почему вы пытаясь запустить другой контейнер для подключения (возможно, вы имели в виду ссылку на два контейнера)

Если вы используете Mac (или Windows) с док-станцией, вы хотите подключиться к 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

Это не работает для меня. Я выполнил первую команду, в которой он создал изображение и контейнер. но когда я пытаюсь подключиться к mysql с моего хоста, используя dbvisualizer. он говорит «отказ связи». Мой хост является машиной Mac и не работает с mysql. поэтому мне нужно использовать dbvisualizer для подключения к mysql, запущенного внутри моего контейнера докеров. –

+1

@KnowsNotMuch это потому, что вы используете MacOS с докер-машиной. Docker не запускается изначально на MacOS, проверьте мое редактирование для вопроса. – Rico

Смежные вопросы