用go连接到mysql数据库

时间:2013-09-11 23:39:22

标签: mysql go

我正在尝试基本连接到我的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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

查看
ps ax | grep mysql