【问题标题】:Can't reach MySQL hosted DB from Docker .NET Core无法从 Docker .NET Core 访问 MySQL 托管数据库
【发布时间】:2020-02-16 09:30:13
【问题描述】:

我有一个运行 Ubuntu 的 DigitalOcean Droplet,我已经安装了 MySQL。我可以从我的计算机通过 MySQL 工作台的 SSH 连接访问它,所以远程访问是好的。 主机名是 127.0.0.1

The bind address in my mysqld.cnf: 127.0.0.1

我有一个 .NET Core API,我想使用 Docker 来运行它。我将容器推送到 docker hub 并将其拉到水滴上。当我尝试运行时出现此错误:

使用连接到服务器上的数据库“发生错误 ‘127.0.0.1’。

我的连接字符串:

"Server=127.0.0.1;Port=3306;Database=db;Uid=user;Pwd=pass”

我尝试服务器:localhost

docker0 的 IP 地址:172.17.0.1 所以我也尝试了这个连接字符串。

我不明白为什么我可以从 MySQL 工作台连接到数据库,而不能从 .NET Core Web API。

.NET Core 版本是3.1。

【问题讨论】:

    标签: mysql docker .net-core connection digital-ocean


    【解决方案1】:

    您的 .NET Core 位于容器内。因此,如果您尝试连接localhost 或127.0.0.1,它将尝试连接容器本身,而不是主机。由于您的 MySQL 在您的主机上,而不是在容器内,因此您可以使用其他 IP 访问它。

    例如你有eth0或enps0或类似的东西,那么那个接口有IP192.168.1.2,那么你可以使用这个IP作为连接字符串。


    或者,另一种方法是在创建容器时使用--network host。这样,如果你使用127.0.0.1,它会尝试连接主机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      相关资源
      最近更新 更多