Как подключить mysql workbench к запуску mysql внутри docker?

Я использую сервер mysql внутри контейнера докеров и могу получить доступ к докере. Как создать соединение в mysql workbench, запущенном на моем локальном компьютере (Host Machine).

mysql,docker,mysql-workbench,

16

Ответов: 6


11 ов

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

  • во-первых, ваш запуск docker должен сопоставить порт mysql с портом хоста:

    docker run -p host:container

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

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

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

Если вам нужно использовать localhost, вам нужно будет выполнить некоторую переадресацию портов на уровне VirtualBox :

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

( controlvmесли VM запущена, modifyvmVM остановлена) (замените « 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-addresss*=s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
  • Вам необходимо создать пользователей при запуске вашей базы данных в образ вашего докера.
    См. Например 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"

10

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

  1. Укажите конфигурационный блок mysql в ваших службах : db : image : mysql тома : - "./.data/db:/var/lib/mysql" среда : MYSQL_ROOT_PASSWORD : root MYSQL_DATABASE : mydb MYSQL_USER : пользователь MYSQL_PASSWORD : pass ports : 42333 : 3306 .yml. У меня следующий MySQL блок под услугой объекта в моем Докер-compose.yml файла.

    docker ps
    docker exec -it <mysql container name> /bin/bash 
  2. Перезагрузите контейнер докеров и запустите следующие команды, чтобы добраться до оболочки bash в контейнере mysql

    mysql -u root -p

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

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

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

    create user 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';

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

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

    введите описание изображения здесь

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


1

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


1

@ Ответ Кришны работал, но с небольшими изменениями - пользователь был добавлен следующим образом

docker-compose

см. Плагин проверки подлинности 'caching_sha2_password' не может быть загружен


1

Предположим, у вас есть следующее содержимое вашего docker-composeфайла:

database: image: mysql:5.6 volumes: - dbdata:/var/lib/mysql environment: - "MYSQL_DATABASE=homestead" - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=secret" - "MYSQL_ROOT_PASSWORD=secret" ports: - "33061:3306"

Для localhost просто используйте хост 127.0.0.1 и порт 33061 введите описание изображения здесь

MySQL, докер, MySQL-верстак,
Похожие вопросы