支持MySql tls连接

This commit is contained in:
navee 2024-04-10 18:12:14 +08:00
parent 269c3a23fa
commit 8b1c36b83a
2 changed files with 16 additions and 3 deletions

View File

@ -4,6 +4,7 @@ mysql:
password: chatnio123456 password: chatnio123456
port: 3306 port: 3306
user: root user: root
tls: false
redis: redis:
host: localhost host: localhost

View File

@ -3,8 +3,10 @@ package connection
import ( import (
"chat/globals" "chat/globals"
"chat/utils" "chat/utils"
"crypto/tls"
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/go-sql-driver/mysql"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"github.com/spf13/viper" "github.com/spf13/viper"
@ -32,15 +34,25 @@ func getConn() *sql.DB {
return db return db
} }
// connect to MySQL mysqlUrl := fmt.Sprintf(
db, err := sql.Open("mysql", fmt.Sprintf(
"%s:%s@tcp(%s:%d)/%s", "%s:%s@tcp(%s:%d)/%s",
viper.GetString("mysql.user"), viper.GetString("mysql.user"),
viper.GetString("mysql.password"), viper.GetString("mysql.password"),
viper.GetString("mysql.host"), viper.GetString("mysql.host"),
viper.GetInt("mysql.port"), viper.GetInt("mysql.port"),
viper.GetString("mysql.db"), viper.GetString("mysql.db"),
)) )
if viper.GetBool("mysql.tls") {
mysql.RegisterTLSConfig("tls", &tls.Config{
MinVersion: tls.VersionTLS12,
ServerName: viper.GetString("mysql.host"),
})
mysqlUrl += "?tls=tls"
}
// connect to MySQL
db, err := sql.Open("mysql", mysqlUrl)
if pingErr := db.Ping(); err != nil || pingErr != nil { if pingErr := db.Ping(); err != nil || pingErr != nil {
errMsg := utils.Multi[string](err != nil, utils.GetError(err), utils.GetError(pingErr)) // err.Error() may contain nil pointer errMsg := utils.Multi[string](err != nil, utils.GetError(err), utils.GetError(pingErr)) // err.Error() may contain nil pointer