Docker Compose - Создание и подключение к контейнеру MySQL - PullRequest
0 голосов
/ 17 января 2019

С трудом пытаясь разобраться с MySQL в докере. У меня запущен контейнер с docker-compose, но я не могу подключиться к базе данных с помощью каких-либо инструментов, таких как phpmyadmin, workbench или tableplus.

Я подключился напрямую к работающему контейнеру и запустил

mysql -uroot -p

и ввел пароль root, который я передал, но это не с этой ошибкой:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Вот мой файл docker-compose.yml:

version: '3'

services:
    db:
    image: mysql
    restart: always
    environment:
      MYSQL_DATABASE: quotes
      MYSQL_USER: quotes
      MYSQL_PASSWORD: P@KhzKZp)56sU8n+
      MYSQL_ROOT_PASSWORD: +\VrLG*<t5sq[\\shR29u#n~A3^Jp*
    ports:
      - '3306:3306'
    volumes:
      - /private/mdbdata/quotes:/etc/mysql/conf.d
    expose:
      - '3306'

Занимался этим уже несколько дней ... надеюсь, кто-нибудь может помочь!

Ответы [ 3 ]

0 голосов
/ 18 января 2019

Вы пробовали решение, предоставленное здесь ? По сути, если у вас был контейнер, запущенный ранее, вы должны явно очистить его, так как docker отслеживает корневые пароли (через volume ) из ранее созданных контейнеров. Это происходит со многими инструментами, это не уникально для контейнеров MySQL. Простого docker-compose rm -v должно хватить, после чего поднимите свой контейнер. Это в основном удаляет старый том с диска, удаляя все данные из предыдущего экземпляра контейнера.

Вы также можете вызвать docker ps, найти свой контейнер и выполнить docker rm -v <CONTAINER_NAME>. Затем поднимите свой контейнер.

0 голосов
/ 20 января 2019

Наконец-то решил эту проблему ... Мне пришлось удалить все специальные символы из строк пароля.

Я устал добавлять одинарные и двойные кавычки вокруг строк, чтобы увидеть, позволят ли это специальные символы, но это все равно не удалось. Пароли должны быть буквенно-цифровыми.

0 голосов
/ 17 января 2019

Я думаю, что ваш контейнер ищет сервер MySQL на 'localhost', который НЕ БУДЕТ РАБОТАТЬ. «localhost» для контейнера - это сам контейнер, а НЕ хост-машина, на которой он работает.

Вы должны иметь доступ к серверу MySQL, используя IP-адрес хост-машины.

...