Ubuntu升级后的Golang MySQL连接超时

时间:2018-09-25 21:25:59

标签: mysql ubuntu go

我在golang项目中从MySQL数据库中获取数据时遇到问题。在我从Ubuntu 16.04升级到Ubuntu 18.04.01之前,该项目一直没有问题。现在,应用程序在连接数据库时超时。

我首先想到的是,从16.04升级到18.04时发生了问题。为了证明这一点,我启动了一个新的运行16.04的VM,执行了“ do-release-upgrade”并将其升级到18.04。但是,在此VM上,我的应用程序运行正常,没有问题。

我无所适从这里去解决正在发生的事情。这是两种配置的摘要。 VM(正在运行)和服务器(不在运行)都在下面;

Ubuntu 18.04.01 LTS x86_64
内核4.15.0-34-通用
转到1.11
MySQL 5.7.23-0ubuntu

这是我的测试程序:
包主

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

func main() {
        fmt.Printf("Connecting to db\n")
        db,err := sql.Open("mysql","Test:@/Test")
        if err != nil {
                panic(err)
        }
        fmt.Printf("Trying query Row\n")
        var Data int 
        err = db.QueryRow("SELECT Data FROM Test WHERE ID=2").Scan(&Data)
        fmt.Printf("After Query\n")
        if err != nil {
                panic(err)
        }
        fmt.Printf("Got Data=%d\n",Data)
        db.Close()
}

在VM上,程序可以毫无问题地执行并返回一些有效数据。服务器挂在QueryRow行上。 2分钟后,我得到了这个回报

$ time ./test
Connecting to db
Trying query Row
After Query
panic: dial tcp 127.0.0.1:3306: connect: connection timed out

goroutine 1 [running]:
main.main()
    /home/daedalus/test/sqltest.go:20 +0x263

real    2m10.874s
user    0m0.001s
sys 0m0.009s

我意识到问题是程序无法连接到数据库,或者数据库没有响应,但是我不明白为什么。 syslog,mysql的日志文件中均未记录任何内容。我可以看到MySQL没有错。我可以以Test用户身份连接并运行查询。

我不确定在两种配置相同的情况下如何继续查找服务器故障但VM运行的原因。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我可以考虑两种可能性:

  • MySQL服务器缺少用户“ Test@127.0.0.1”,但是具有用户“ Test @ localhost”
  • 服务器防火墙阻止访问127.0.0.1上的端口3306

答案 1 :(得分:0)

回答我的问题只是为了结束它,但感谢Peter提出我的解决方案的意见。

问题特别是我的防火墙规则。我对原籍国有严格的规定,但无意中阻止了来自127.0.0.1的流量。一旦我为此做出例外,一切都会正常。