You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器无法连接localhost MySQL:如何修改run命令解决?

问题解决方法

容器内的localhost指向容器自身,而非宿主机,这是导致连接失败的核心原因。根据你的MySQL部署位置,有两种解决方案:

情况1:MySQL运行在宿主机上

  1. 修改环境变量配置
    编辑.env文件,将host值替换为宿主机的可访问地址:

    host=host.docker.internal  # Linux/macOS/Windows Docker Desktop通用
    # 若上述地址无效,可替换为宿主机的实际IP(如192.168.1.100)
    user=test
    passwd=test
    database=semantic_textual_similarity
    
  2. 调整Docker启动命令
    移除无用的-p 3306:3306端口映射(该参数是将容器端口暴露给宿主机,而非让容器访问宿主机端口),添加宿主机映射参数:

    docker run --env-file=.env --add-host=host.docker.internal:host-gateway semantic_textual_similarity:semantic_textual_similarity
    
  3. MySQL权限配置(必要步骤)
    确保MySQL允许外部连接:

    • 修改MySQL配置文件(如my.cnf),将bind-address设置为0.0.0.0(允许所有IP访问)
    • 给test用户授予跨IP访问权限:
      GRANT ALL ON semantic_textual_similarity.* TO 'test'@'%' IDENTIFIED BY 'test';
      FLUSH PRIVILEGES;
      

情况2:MySQL以Docker容器运行

  1. 创建自定义Docker网络

    docker network create mysql-network
    
  2. 启动MySQL容器并加入网络

    docker run -d \
      --name mysql-container \
      --network=mysql-network \
      -e MYSQL_ROOT_PASSWORD=your_root_pwd \
      -e MYSQL_USER=test \
      -e MYSQL_PASSWORD=test \
      -e MYSQL_DATABASE=semantic_textual_similarity \
      mysql:latest
    
  3. 修改环境变量配置
    编辑.env文件,将host设置为MySQL容器的名称:

    host=mysql-container
    user=test
    passwd=test
    database=semantic_textual_similarity
    
  4. 启动应用容器并加入同一网络

    docker run --env-file=.env --network=mysql-network semantic_textual_similarity:semantic_textual_similarity
    

内容的提问来源于stack exchange,提问作者Alex Nikitin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:17:27