Невозможно подключить Mysql 8, работающее на docker, с mysql верстаком - PullRequest
0 голосов
/ 09 июля 2020

У меня запущена docker установка Mysql 8.

Я могу получить доступ к Mysql внутри docker контейнера, однако я не могу подключиться с помощью Mysql workbench . У меня есть еще один контейнер mysql, но это Mysql версии 5.7, и у меня нет проблем с подключением к нему.

Я попытался разрешить root пользователю полный доступ к хосту с% в mysql .user

| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |

Я пытался подключиться к контейнеру, используя имена хостов: localhost, 0.0.0.0, 127.0.0.1 и порт 3306, но не повезло

Я также создал отдельного пользователя и дал полную привилегию и все равно не повезло

Ниже мой Docker файл компоновки

version: '3.5'

services:
  database:
    build:
      context: ./images/mysql
    restart: always
    command: ['--default-authentication-plugin=mysql_native_password']
    environment:
      - MYSQL_DATABASE=inim
      - MYSQL_USER=inimuser
      - MYSQL_PASSWORD=inimpass
      - MYSQL_ROOT_PASSWORD=docker
    ports:
      - "3306:3306"
    volumes:
      - ./database/data:/var/lib

volumes:
  my-datavolume:

мой Dockerfile:

FROM mysql:8.0.20

CMD ["mysqld"]

EXPOSE 3306

Ниже мой Docker PS

b8832d9711b4        docker_inim_db_database   "docker-entrypoint.s…"   14 minutes ago      Up 14 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp          docker_inim_db_database_1

У меня аналогичная установка с Mysql 5.7, и она нормально подключается. Не уверен, что я здесь делаю не так.

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете отлаживать свой процесс, перейдя в контейнер. Запустите:

$ docker exec docker_inim_db_database_1 /bin/bash

Теперь вы должны быть в bash контейнера. Затем войдите в систему mysql bash, используя:

$ mysql -uroot -p

и введите свой пароль или просто нажмите Enter, если его нет.

В этом процессе есть два шага:

а) Предоставлять привилегии. Как root пользователь выполняет с этим заменяющим 'пароль' вашим текущим паролем root:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

b) привязать ко всем адресам:

Самый простой способ - закомментировать строку в вашем файле my.cnf:

#bind-address = 127.0.0.1 

и перезапустите mysql

service mysql restart

По умолчанию он привязывается только к localhost, но если вы прокомментируете строку, она привяжется ко всем интерфейсам он находит. Комментирование строки эквивалентно bind-address = *.

Чтобы проверить, где служба mysql связала, выполните как root:

netstat -tupan | grep mysql

Обновление для Ubuntu 16:

Файл конфигурации (сейчас)

/etc/mysql/mysql.conf.d/mysqld.cnf 

Большинство приведенных выше шагов взяты из ответа: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...