0

我使用 Docker 的默认设置在我的 Windows 10 上创建了一个 MySQL 映像。

我使用以下命令启动了容器:

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

我使用了 --network 参数,希望可以从我的主机连接到容器。

然后我运行这个命令从 MySQL shell 连接到容器

    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 没有成功并且出现相同的错误。

如果有人尝试使用 Delphi FireDac 连接到同一台计算机上托管的 MySQL 容器,我将不胜感激。

先感谢您。

4

1 回答 1

0

我能够通过使用此命令运行图像来解决问题

    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

一切都很好。希望这对尝试相同的人有所帮助。

于 2021-10-24T19:26:14.700 回答