使用Go连接MySQL数据库

7

我正在尝试与我的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

2
你看到了什么错误? - amattn
2个回答

3

连接被拒绝通常意味着端口未打开或被防火墙阻塞。 以下是一些需要检查的事项:

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

这有点奇怪。没有本地防火墙,我可以使用这些凭据、地址和端口通过 C++ 和 Ruby 进行连接。 - Jacobm001

0

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

ps ax | grep mysql

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接