首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用golang远程ping mysql

问如何使用golang远程ping mysql
EN

Stack Overflow用户
提问于 2016-12-09 05:43:37
回答 2查看 2.4K关注 0票数 0

我正在使用go来平一些Linux机器。但是它的工作并不准确,因为它总是需要10秒才能连接远程mysql。

我使用以下命令:

mysql -u用户-p密码-h REMOTE_IP

所以我想知道如何使用linux命令来知道它是否打开。

然后,我将使用金刚的exec.Command来做这件事。

以下是我的ping代码:

代码语言:javascript
复制
package main

import (
    "errors"
    "fmt"
    "github.com/tatsushid/go-fastping"
    "net"
    "net/smtp"
    "strings"
    "time"
)

func main(){
    err := ping("192.168.2.1")
    if err != nil{
        fmt.Println("WARNING!!!!!!")
    }
}
func ping(ip string) error {
    p := fastping.NewPinger()
    ra, err := net.ResolveIPAddr("ip", ip)
    if err != nil {
        return err
    }
    p.AddIPAddr(ra)
    found := false
    p.OnRecv = func(addr *net.IPAddr, rtt time.Duration) {
        found = true
    }
    err = p.Run()
    if err != nil {
        return err
    }
    if !found {
        return errors.New("response error")
    }
    return nil
}
EN

回答 2

Stack Overflow用户

发布于 2016-12-09 06:11:36

我想您想知道mysql是否可以访问。您可以使用以下示例:

代码语言:javascript
复制
package main

import (
    "database/sql"
    "flag"
    "fmt"
    "log"

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

func main() {
    var (
        server = flag.String("mysql", "localhost:3306", "mysql server")
        user   = flag.String("user", "root", "mysql user")
        pass   = flag.String("password", "", "mysql password")
    )
    flag.Parse()

    db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/", *user, *pass, *server))
    if err != nil {
        log.Fatalln(err)

    }
    defer db.Close()

    err = db.Ping()

    if err != nil {
        log.Fatalln(err)

    } else {
        log.Println("mysqld is alive")

    }

}
票数 4
EN

Stack Overflow用户

发布于 2016-12-09 05:53:14

如果您只需要检查到特定主机和端口的连接,可以这样做:

代码语言:javascript
复制
package main

import (
    "fmt"
    "net"
)

const (
    host = "192.168.2.1"
    port = "3306" // default MySQL port
)

func main() {

    conn, err := net.Dial("tcp", host+":"+port)
    if err != nil {
        panic(err)
    }
    defer conn.Close()

    fmt.Printf("Connected to %s \n", conn.RemoteAddr().String())
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41053830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档