如何解决Docker连接本地MySQL服务失败的问题

 更新时间:2025年06月13日 15:00:07   作者:我想要身体健康  
这篇文章主要介绍了如何解决Docker连接本地MySQL服务失败的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题描述

在学习 Docker 和 Go 时,遇到了一个连接 MySQL 数据库失败的问题。

具体情况如下:

使用以下命令运行 Docker 容器:

docker run --rm -p 8080:8080/tcp --env-file .env my-project:latest

.env 文件中的内容如下:

DB_HOST=127.0.0.1
DB_USERNAME=root
DB_NAME=mydbs
DB_PASS=root123
AUTH_GEN_URL=https://api.learning.mydbs.id

在 Windows 上使用 Docker Desktop,报错信息为:dial tcp 127.0.0.1:3306: connect: connection refused

这意味着在 IP 127.0.0.1 和端口 3306 上没有数据库服务在监听。

问题分析

在默认的网络模式下,127.0.0.1 指的是容器内部的地址,而不是主机的地址。

因此,当容器尝试连接 127.0.0.1:3306 时,它实际上是在连接容器自身的 3306 端口,而不是主机上的 MySQL 服务。

解决方法

对于 Windows 和 Mac 用户

在 Windows 和 Mac 上,可以使用 host.docker.internal 来代替 127.0.0.1

这样可以确保容器内部的服务正确连接到运行在主机上的 MySQL 实例。

修改后的 .env 文件如下:

DB_HOST=host.docker.internal
DB_USERNAME=root
DB_NAME=mydbs
DB_PASS=root123
AUTH_GEN_URL=https://api.learning.mydbs.id

这样修改后,再次运行 Docker 容器,问题应能得到解决。

对于 Linux 用户

在 Linux 上,解决这个问题更加简单,只需要在运行 Docker 容器时添加 --network="host" 参数即可。

这样,容器将直接使用主机的网络,127.0.0.1 将指向主机自身。

命令如下:

docker run --rm --network="host" --env-file .env my-project:latest

总结

以上是解决 Docker 连接本地 MySQL 服务失败问题的详细步骤。在不同操作系统上,解决方法有所不同:

  • Windows 和 Mac 用户可以使用 host.docker.internal
  • Linux 用户可以使用 --network="host" 参数。

通过以上步骤,相信你已经能够成功解决 Docker 容器中无法连接本地 MySQL 数据库的问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用 Docker 部署 GitLab 并持久化数据的实例步骤

    使用 Docker 部署 GitLab 并持久化数据的实例步骤

    本文将详细介绍如何使用 Docker 部署 GitLab,并将数据(如仓库、配置、日志等)持久化到主机磁盘,我们还将解决常见的端口冲突问题,并介绍如何从另一台 GitLab 恢复数据到新的 GitLab 实例,感兴趣的朋友一起看看吧
    2025-05-05
  • docker-compose启动mongo容器的使用

    docker-compose启动mongo容器的使用

    这篇文章主要介绍了docker-compose启动mongo容器的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 从零开始构建docker基础镜像的方法

    从零开始构建docker基础镜像的方法

    这篇文章主要介绍了从零开始构建docker基础镜像的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Docker私有仓库的搭建和界面化管理详解

    Docker私有仓库的搭建和界面化管理详解

    这篇文章主要给大家介绍了关于Docker私有仓库的搭建和界面化管理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 使用Docker容器部署MongoDB并支持远程访问及遇到的坑

    使用Docker容器部署MongoDB并支持远程访问及遇到的坑

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,今天通过本文给大家介绍使用Docker容器部署MongoDB并支持远程访问及遇到的坑,感兴趣的朋友一起看看吧
    2022-07-07
  • docker可视化管理工具portainer忘记密码重置教程的实现

    docker可视化管理工具portainer忘记密码重置教程的实现

    本文主要介绍了docker可视化管理工具portainer忘记密码重置教程的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Docker安装mysql8.0并配置忽略大小写问题

    Docker安装mysql8.0并配置忽略大小写问题

    本文介绍了使用Docker启动MySQL的过程,包括拉取镜像、查看镜像、启动MySQL命令及其参数解释、连接MySQL等步骤,并强调了设置`lower_case_table_names=1`只能在初始化时进行配置
    2026-05-05
  • docker-compose统一管理多个容器使用详解

    docker-compose统一管理多个容器使用详解

    这篇文章主要为大家介绍了docker-compose统一管理多个容器使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • docker容器增加或者修改容器映射端口的实现方法

    docker容器增加或者修改容器映射端口的实现方法

    在只有使用docker安装的容器,没有使用docker-compose或者其他客户端工具,如果要增加或者修改容器端口,也是可以增加或者修改容器端口映射,本文给大家介绍了docker容器增加或者修改容器映射端口的实现方法,需要的朋友可以参考下
    2025-01-01
  • 详解docker-compose安装minio

    详解docker-compose安装minio

    这篇文章主要介绍了docker-compose安装minio的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07

最新评论