mysql - 使用 golang 连接到 docker mysql

标签 mysql docker go

运行 docker mysql
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
[mysql docker运行容器][1]

去代码:

包主

import (
"database/sql"

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

func main() {

db, err := sql.Open("mysql", "root:root@tcp(172.17.0.2:3306)/test-db")
if err != nil {
    panic(err)
}
defer db.Close()
err = db.ping()
if err != nil {
   log.Print(err)
}

ping 正在抛出 ETIMEDOUT 。 IP 正确的是容器 IP。

最佳答案

它必须为 docker 内部 IP 公开一个端口,但是每次重新启动时都可以更改 IP。要将端口映射到本地主机,您可以使用标志 -p 127.0.0.1:3306:3306
要为 docker 容器指定 IP,您可以创建自己的用户定义的虚拟网络并在启动容器时在此网络上绑定(bind) IP。

docker network create --subnet=192.168.101.0/24 test
docker run -d --name db1 --network test --ip=192.168.101.10 -e MYSQL_ROOT_PASSWORD=12345 mysql:5.7
mysql -h 192.168.101.10 -uroot -p12345

另外,请确保 MySQL 已启动。您可以通过 docker ps 查看状态并使用 docker logs db1 记录.在哪里 db1使用标志 --name 指定的名称.

关于mysql - 使用 golang 连接到 docker mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60248943/

相关文章:

bash - 如何使用 Go 获取 shell 脚本?

arrays - 将多维数组格式的查询字符串解析为实际数组

php - 在 php 或 mysql 中使用数字中的内部数组对数组进行排序

javascript - 如何使用mysql变量动态更改按钮的div内容onclick

MySQL:转换字符串内的日期格式

mysql - 不允许 Docker mysqld 绑定(bind)操作

https - 戈朗 : Send http request with certificate

java - 从 MySql 表中获取的 Android 应用程序数据

docker - 无法从远程 Gitlab 注册表拉取镜像到 Kubernetes

php - 服务器上的Nginx无法连接到docker php-fpm