Устранение неполадок «ОШИБКА Docker Compose MySQL: подключение ECONNREFUSED 127.0.0.1:3306» и способы ее устранения

При работе с Docker Compose и MySQL вы можете столкнуться с сообщением об ошибке «docker compose mysql ОШИБКА: подключите ECONNREFUSED 127.0.0.1:3306». Эта ошибка указывает на то, что в соединении с сервером базы данных MySQL было отказано. В этой статье мы рассмотрим несколько способов решения этой проблемы, а также приведем примеры кода.

Метод 1: проверка файла Docker Compose
Первый шаг — проверить файл Docker Compose на наличие неправильных конфигураций. Убедитесь, что служба MySQL правильно определена и что сопоставление портов правильно настроено для предоставления хосту порта MySQL (по умолчанию — 3306).

Пример фрагмента Docker Compose:

version: '3'
services:
  mysql:
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=your_password

Метод 2: проверка состояния контейнера MySQL
Проверьте, запущен ли контейнер MySQL и успешно ли он запустился. Вы можете использовать команду docker psдля просмотра списка запущенных контейнеров. Найдите свой контейнер MySQL и убедитесь, что он находится в состоянии «Включено».

Пример команды:

docker ps

Метод 3: проверка настроек подключения MySQL
Убедитесь, что параметры подключения MySQL в вашем приложении (например, хост, порт, имя пользователя, пароль) соответствуют конфигурации в вашем файле Docker Compose. Убедитесь, что вы используете правильный хост и порт для подключения к контейнеру MySQL.

Пример настроек подключения:

Host: 127.0.0.1
Port: 3306
Username: root
Password: your_password

Метод 4: проверьте настройки брандмауэра.
Проверьте, не блокируют ли какие-либо правила брандмауэра соединение с MySQL. Убедитесь, что порт 3306 открыт в настройках брандмауэра вашего хост-компьютера.

Пример команды для открытия порта в Ubuntu UFW:

sudo ufw allow 3306

Метод 5: проверка соединения с хост-компьютера
Попытайтесь подключиться к контейнеру MySQL с вашего хост-компьютера с помощью клиентского инструмента MySQL (например, MySQL Workbench, Navicat). Это поможет определить, связана ли проблема с подключением к приложению или к самому контейнеру.

Пример команды с использованием клиента командной строки MySQL:

mysql -h 127.0.0.1 -P 3306 -u root -p

Ошибка «docker compose mysql ERROR: Connect ECONNREFUSED 127.0.0.1:3306» может возникнуть по разным причинам, например из-за неправильных конфигураций, состояния контейнера или настроек брандмауэра. Следуя методам устранения неполадок, описанным в этой статье, вы сможете решить проблему и установить успешное соединение с контейнером MySQL.