2015-11-20 2 views

ответ

9

2 Докер связанные условия:

  • первый, ваш пробег докер необходимо сопоставить порт MySQL к хост-порт:

    docker run -p host:container 
    

(например: docker run -d -p 3306:3306 tutum/mysql)

  • второй, если вы используете ng docker в виртуальной машине (докер-машина, с boot2docker), вам нужно использовать ip docker-machine ip <VMname> с отображенным портом узла.

    http://$(docker-machine ip <VMname>):hostPort 
    

Если вам нужно использовать localhost, вам нужно будет сделать some port forwarding at the VirtualBox level:

VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306" 
VBoxManage controlvm "boot2docker-vm" natpf1 "udp-port3306,udp,,3306,,$3306" 

(controlvm если виртуальная машина работает, modifyvm является VM остановлен) (заменить " boot2docker-vm "на имя вашего vm: см. docker-machine ls)


2 MySQL связанных условия:

  • Как показано в nkratzke/EasyMySQL/Dockerfile, Вам необходимо включить удаленный доступ:

    # Enable remote access (default is localhost only, we change this 
    # otherwise our database would not be reachable from outside the container) 
    RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf 
    
  • Вам нужно создать пользователь, когда startig вашей базы данных в Докер изображении.
    Смотри, например, nkratzke/EasyMySQL/start-database.sh, который называется по Dockerfile CMD:

    /usr/sbin/mysqld & 
    sleep 5 
    echo "Creating user" 
    echo "CREATE USER '$user' IDENTIFIED BY '$password'" | mysql --default-character-set=utf8 
    echo "REVOKE ALL PRIVILEGES ON *.* FROM '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 
    echo "GRANT SELECT ON *.* TO '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 
    echo "finished" 
    
+0

Docker работает на моей локальной машине. и он имеет адрес 172.17.42.1 IP. Когда я запускаю $ select user(); Он дает + ---------------- + | user() | + ---------------- + | root @ localhost | + ---------------- + 1 ряд в комплекте (0.00 сек) и отображаемая переменная дает порт | 3306 –

+0

@PawanSharma вы в Linux? Если да, какова была точная команда 'docker run', которую вы используете для запуска контейнера mysql? Какую версию докера вы используете? – VonC

+0

Да, я на Ubuntu mchine nad docker версии Docker версии 1.8.2, build 0a8c2e3. Я могу получить доступ к mysql внутри контейнера докеров. –

0

Я получил решение для этого, установив значение поля в Hostname: 127.0.0.1 (Localhost), порт по умолчанию 3306 с вашими кредитами.

+1

В каком поле вы здесь? – VonC

+0

@VonC Здесь я обращаюсь к полям workbench, например * hostname *, * port *, * username * и * password *, необходимым для подключения mysql сервер. –

2

Вы должны сделать несколько конфигураций в контейнере для докеров. Следуйте приведенным ниже инструкциям.

  1. Укажите конфигурационный блок mysql в файле docker-compose.yml. У меня есть следующий mysql-блок под сервисами объект в моем файле docker-compose.yml.

    services: 
        db: 
         image: mysql 
         volumes: 
          - "./.data/db:/var/lib/mysql" 
         environment: 
          MYSQL_ROOT_PASSWORD: root 
          MYSQL_DATABASE: mydb 
          MYSQL_USER: user 
          MYSQL_PASSWORD: pass 
         ports: 
          42333:3306 
    
  2. Restart докер контейнер и запустить следующие команды, чтобы добраться до Баш оболочки в тузд контейнер

    docker ps 
    docker exec -it <mysql container name> /bin/bash  
    

    Внутри контейнера, для подключения к тузд типа командной строки,

    mysql -u root -p 
    

    Используйте MYSQL_ROOT_PASSWORD, как указано в файле docker-compose.yml. Выполните следующие команды для создания нового пользователя.

    create user 'user'@'%' identified by 'pass'; 
    grant all privileges on *.* to 'user'@'%' with grant option; 
    flush privileges; 
    

    Знак процента (%) означает все ip-адреса. Перезагрузите контейнер докера.

  3. В вашей Workbench MySQL содержатся сведения о подключении. Используйте MYSQL_PASSWORD, как указано в файле docker-compose.yml.

    enter image description here

Теперь вы должны иметь возможность подключения к тузд контейнера.

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