【发布时间】:2021-07-10 13:19:03
【问题描述】:
当只需要用户名和密码时,如何使用 go/golang 连接到 mariadb/mysql 数据库有很多示例。但我还没有找到客户端需要证书(TLS/SSL)来连接的简单示例。
这适用于普通连接
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
// Test that db is usable
// prints current date & time to stdout
func queryDB(db *sql.DB) {
// Query the database
var result string
err := db.QueryRow("SELECT NOW()").Scan(&result)
if err != nil {
log.Fatal(err)
}
fmt.Println(result)
}
func main() {
// generate connection string
cs := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", "username", "password", "dbHost", "dbPort", "database")
db, err := sql.Open("mysql", cs)
if err != nil {
log.Printf("Error %s when opening DB\n", err)
log.Printf("%s", cs)
return
}
defer db.Close()
e := db.Ping()
fmt.Println(cs, e)
queryDB(db)
}
但是如果客户端需要证书来连接,我应该把这些信息放在哪里?
在我的my.cnf 中是这些行:
[mysql]
## MySQL Client Configuration ##
ssl-ca=cert/ca-cert.pem
ssl-cert=cert/client-cert.pem
ssl-key=cert/client-key.pem
【问题讨论】:
标签: mysql go ssl mariadb client-certificates