【问题标题】:Connecting to mysql database with go使用 go 连接到 mysql 数据库
【发布时间】:2013-09-16 04:17:24
【问题描述】:

我正在尝试与我的 mysql 服务器建立基本连接,但我似乎无法真正连接。我知道凭据是有效的并且拥有他们需要的所有权限,但由于某种原因,他们一直被拒绝。

package main

import (
    "fmt"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
    "os"
)

func main() {
    db, err:= sql.Open("mysql", "user:pass@tcp(localhost:3306)/scf")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    q, err := db.Prepare("SELECT * from logins limit 5")
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    rows, err := q.Query()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    i := 0

    for rows.Next() {
        i++
        var title string
        err = rows.Scan( &title )
        fmt.Printf("Title: %s \n", title)
    }

    db.Close()

}

编辑:

显然我忘了包含错误:

dial tcp 127.0.0.1:3306: connection refused
exit status 1

【问题讨论】:

  • 你看到了什么错误?

标签: mysql go


【解决方案1】:

connection refused 通常表示端口未打开或被防火墙阻止。需要检查的几件事:

  • MySQL(在本地主机上)是否正在运行?它在端口 3306 上吗?
  • 如果您使用的是 Windows、Mac 或 Linux,是否有可能阻止端口 3306 的防火墙?
  • 如果您使用的是 Linux,是否启用了可能会阻塞端口 3306 的 SELinux?

【讨论】:

  • 这有点奇怪。没有本地防火墙,我可以使用 C++ 和 Ruby 使用这些凭据、地址和端口进行连接。
【解决方案2】:

我遇到了类似的问题。我发现 Mac 上的端口不同。我在my.cnf 中找不到它,但端口是在运行时设置的,您可以使用

ps ax | grep mysql

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 2013-08-18
    • 2012-04-27
    • 2011-07-22
    • 2017-10-15
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多