如何使用unix套接字连接MySQL?

Ami*_*eem 2 mysql go

我想使用 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
}

Run Code Online (Sandbox Code Playgroud)

Ami*_*eem 5

于是,经过一番尝试和尝试,我找到了解决问题的方法。如果你想使用Unix套接字连接Golang中的MySQL,你可以通过以下方式准备你的连接字符串

{{username}}:{{password}}@unix({{socketPath}})/{{dbname}}?charset=utf8
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

{{username}}:{{password}}@unix({{socketPath}})/{{dbname}}?charset=utf8
Run Code Online (Sandbox Code Playgroud)