Py学习  »  docker

无法使用Go and Docker连接到MySQL服务器-拨号TCP 127.0.0.1:3306:连接:连接被拒绝

william205 • 8 年前 • 4896 次点击  

我的Mac上安装了MySQL社区服务器,它已经设置好并且正在运行,我可以使用navicat for mysql在localhost:3306上连接到它。但是,每当我尝试从使用Docker Compose运行的Go应用程序连接到数据库时,我会得到以下错误:

dial tcp 127.0.0.1:3306: connect: connection refused

这是我的通行密码:

// dbUser, dbPassword, & dbName are all variables that definitely contain the correct values
db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(localhost:3306)/"+dbName)

if err != nil {
    panic(err.Error())
}

defer db.Close()

query, err := db.Query("INSERT INTO test_table(test_field) VALUES(This is a test)")

if err != nil {
    panic(err.Error())
}

defer query.Close()

我要进口:

"database/sql"
_ "github.com/go-sql-driver/mysql"

任何帮助都会非常感谢,谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30672
文章 [ 2 ]  |  最新文章 8 年前
Vitah
Reply   •   1 楼
Vitah    8 年前

您应该这样打开:

db, err := sql.Open("mysql", "root:root@tcp(mysql:3306)/GoLife")

mysql 是Docker编写服务名。

Cosmic Ossifrage
Reply   •   2 楼
Cosmic Ossifrage    8 年前

无法连接到 localhost 从Docker(特别是在Mac上,Docker运行在Linux虚拟机的表面下)访问主机提供的服务。

但是,有使用特殊主机名通过IP地址访问主机的功能 docker.for.mac.localhost . 不存在任何其他Docker网络问题,请修改要使用的连接字符串 docker.for.mac.localhost:3306 应解决此问题并允许访问主机上的服务。

(有关此解决方案的详细信息,请参阅 Docker docs )