首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySqlException:无法连接到任何指定的MySQL主机

MySqlException:无法连接到任何指定的MySQL主机
EN

Stack Overflow用户
提问于 2022-07-23 03:59:58
回答 1查看 149关注 0票数 0

Docker Desktop中运行我的Docker Desktop项目后,我得到了下面的错误。它创建了我所有的Images,但是它似乎无法连接到MySQL实例:

代码语言:javascript
复制
MySqlException: Unable to connect to any of the specified MySQL hosts.
MySqlConnector.Core.ServerSession.ConnectAsync(ConnectionSettings cs, int startTickCount, ILoadBalancer loadBalancer, IOBehavior ioBehavior, CancellationToken cancellationToken) in ServerSession.cs, line 413

我已经完成了docker-compose文件如下。(这个文件包含一些我决定不删除的其他服务,因为我猜到这个问题可能源于这些服务):

代码语言:javascript
复制
version: "3"

volumes:
  datafiles:

services:

  database:
    image: mysql:8.0.28
    ports:
      - "3307:3306"
    volumes:
      - datafiles:/var/lib/mysql
      - "~/sql-scripts/setup.sql:/docker-entrypoint-initdb.d/1.sql"
    restart: always
    environment: 
      MYSQL_ROOT_PASSWORD: ******
      MYSQL_USER: sa
      MYSQL_PASSWORD: ******
      MYSQL_DATABASE: Pand
    networks:
       - hub_network
  chrome:
    image: selenium/node-chrome:4.3.0-20220706
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    networks:
       - hub_network

  selenium-hub:
    image: selenium/hub:4.3.0-20220706
    container_name: selenium-hub
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"
    networks:
       - hub_network
  web:
     build: .
     ports: 
       - "8090:80"
     depends_on:
       - database
       - selenium-hub
       - chrome
     restart: always
     networks:
       - hub_network
     #Specify Environment Variables for the Api Service
     environment: 
       - DBHOST=database
       - ASPNETCORE_ENVIRONMENT=Development
networks:
 hub_network:
  external: false

而且,共享我的appsettings.Development.json也很有用。

代码语言:javascript
复制
{
  "ConnectionStrings": {
    "MYSQL_PASSWORD": "******",
    "MYSQL_USER": "sa",
    "MYSQL_DATABASE": "Pand"
  }
}

下面是我创建Context的一段代码

代码语言:javascript
复制
    public void ConfigureServices(IServiceCollection services)
    {
        var host = "database";
        var port = "3307";
        var password = Configuration["MYSQL_PASSWORD"] ?? Configuration.GetConnectionString("MYSQL_PASSWORD");
        var userid = Configuration["MYSQL_USER"] ?? Configuration.GetConnectionString("MYSQL_USER");
        var usersDataBase = Configuration["MYSQL_DATABASE"] ?? Configuration.GetConnectionString("MYSQL_DATABASE");

        var connectionString = $"server={host}; userid={userid};pwd={password};port={port};database={usersDataBase}";
        services.AddDbContext<EFDbContext>(
            options => options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))
                .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking), ServiceLifetime.Transient);
    }

如果需要任何其他代码片段,请让我分享。

EN

回答 1

Stack Overflow用户

发布于 2022-07-25 03:06:32

您试过使用mysql客户端从主机连接mysql吗?那有用吗?您已经将主机定义为“数据库”,尝试使用mysql客户端连接主机并发布结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73087932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档