登录
首页 >  Golang >  Go问答

如何使用UNIX套接字连接MySQL数据库?

来源:stackoverflow

时间:2024-02-10 20:45:24 255浏览 收藏

golang学习网今天将给大家带来《如何使用UNIX套接字连接MySQL数据库?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我想使用 unix 套接字连接来连接到 mysql。我不确定如何传递连接字符串中的变量。我在某处读到我也可以使用 config.formatdsn 结构来定义值,但我不知道如何。

// Creates a database connection and returns its instance
func Connection() (*sql.DB, error) {
    conn, err := sql.Open("mysql", "username/password@unix(socketpath)/dbname")
    return conn, err
}


正确答案


所以,经过一些尝试和尝试,我找到了解决我的问题的方法。如果你想使用unix套接字连接golang中的mysql,你可以通过以下方式准备你的连接字符串

{{username}}:{{password}}@unix({{socketpath}})/{{dbname}}?charset=utf8

{{}} 中包含的值是变量。

注意:套接字路径必须是绝对路径。例如: /usr/local/bin/path/to/socket

我发现这个参考非常有帮助 https://chromium.googlesource.com/external/github.com/go-sql-driver/mysql/+/a48f79b55b5a2107793c84c3bbd445138dc7f0d5/README.md

如果您有兴趣,这里是完整的实现

import (
    "database/sql"
    "fmt"

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

type ConnectionSpecs struct {
    username   string
    password   string
    socketPath string
    database   string
}

func GetConnStr() string {
    connConfig := ConnectionSpecs{
        username:   "root",
        password:   "my-password",
        socketPath: "/usr/local/bin/path/to/socket",
        database:   "test",
    }

    connStr := connConfig.username + ":" + connConfig.password +
        "@unix(" + connConfig.socketPath + ")" +
        "/" + connConfig.database +
        "?charset=utf8"
    return connStr
}

// Creates a database connection and returns the same
func Connection() (*sql.DB, error) {
    var connStr = GetConnStr()
    fmt.Println(connStr)
    conn, err := sql.Open("mysql", GetConnStr())
    return conn, err
}

本篇关于《如何使用UNIX套接字连接MySQL数据库?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>