Delphi Firedac подключается к MySQL в контейнере докеров

Я создал образ MySQL в своей Windows 10, используя настройки по умолчанию из Docker.

Я запустил контейнер с помощью этой команды:

          docker run --name local-mysql --network="host" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d <your-docker-Image>

Я использовал параметр --network в надежде, что смогу подключиться к контейнеру с моего хост-компьютера.

Затем я выполнил эту команду, чтобы подключиться к контейнеру из оболочки MySQL.

          docker exec -it mysql bash -l

Мне удалось подключиться с помощью этого

          mysql -h localhost -P 3306 --protocol=tcp -u root -p

Используя Delphi и настроив FireDac на использование DriverId MySQL, я указал хост как localhost, порт 3306, пользователя как root и пароль.

Но я получаю эту ошибку подключения

          [FireDAC][Phys][MySQL] Cannot connect to MySQL server on 'localhost:3306' (10061)

Я безуспешно пытался использовать 127.0.0.1 и 0.0.0.0 и с той же ошибкой.

Я был бы признателен, если бы кто-нибудь попробовал его с DelphiFireDac для подключения к контейнеру MySQL, размещенному на том же компьютере.

Заранее спасибо.

1 ответ

Мне удалось решить проблему, используя эту команду для запуска изображения

          docker run --name local-mysql -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d <your-docker-Image>

Я использовал другой порт хоста (3307) для сопоставления с 3306 по умолчанию

Я смог сначала протестировать его с помощью bash

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

А в Delphi FireDac я использовал следующее для подключения

          Host=127.0.0.1
    Port=3307
    User_Name=root
    Password=my-secret-pw

И все хорошо. Надеюсь, это поможет тому, кто пытается сделать то же самое.

Другие вопросы по тегам