#mysql #docker #firedac #delphi-11-alexandria
Вопрос:
Я создал образ MySQL в своей Windows 10, используя настройки по умолчанию из Docker.
Я запустил контейнер с помощью этой команды:
docker run --name local-mysql --network="host" -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d lt;your-docker-Imagegt;
Я использовал параметр —network в надежде, что смогу подключиться к контейнеру с моего хост-компьютера.
Затем я запустил эту команду для подключения к контейнеру из оболочки MySQL
docker exec -it mysql bash -l
Я смог подключиться, используя это
mysql -h localhost -P 3306 --protocol=tcp -u root -p
Используя Delphi и установив FireDAC для использования MySQL DriverID, я указал хост как localhost, порт 3306, пользователя как root и пароль.
Но я получаю эту ошибку подключения
[FireDAC][Phys][MySQL] Cannot connect to MySQL server on 'localhost:3306' (10061)
Я пытался использовать 127.0.0.1 и 0.0.0.0 без успеха и с той же ошибкой.
Я был бы признателен, если бы кто-нибудь попробовал использовать Delphi FireDAC для подключения к контейнеру MySQL, размещенному на том же компьютере.
Заранее спасибо.
Ответ №1:
Я смог решить эту проблему, используя эту команду для запуска образа
docker run --name local-mysql -p 127.0.0.1:3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d lt;your-docker-Imagegt;
Я использовал другой порт хоста (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
И все хорошо. Надеюсь, это поможет кому-то, кто пытается сделать то же самое.