php小編柚子在這篇文章中將為您介紹如何將TLS 1.2與MySQL Go驅動程序一起使用。TLS 1.2是一種安全傳輸協議,用于保護網絡通信的安全性。在使用MySQL Go驅動程序連接數據庫時,啟用TLS 1.2可以提高數據傳輸的安全性。本文將詳細說明如何配置和使用TLS 1.2與MySQL Go驅動程序來建立安全的數據庫連接。跟隨本文的指導,您將能夠輕松地將TLS 1.2與MySQL Go驅動程序一起使用,保護您的數據和通信的安全。
問題內容
我們必須使用 tls1.2 來連接到我們的 mysql 服務器。在我們的 java 應用程序中,我們使用以下 jdbc url –
jdbc:mysql://xxxx-001-dev.cluster-xx-2.rds.amazonaws.com/bats?**enabledtlsprotocols=tlsv1.2**
登錄后復制
在我們的 go 應用程序中連接到 mysql 時,我無法實現類似的配置 –
cfg1 := mysql.config{
user: "admin",
passwd: "xxxxxxx",
net: "tcp",
addr: "xxxx-001-dev.cluster-xx-2.rds.amazonaws.com:3306",
dbname: "xxxx",
allownativepasswords: true,
}
sql.open("mysql", cfg1.formatdsn())
登錄后復制
我嘗試添加以下語句。但沒有幫助,它拋出以下錯誤 –
// enabledtlsprotocolstlsv1.2
cfg1 := mysql.config{
user: "admin",
passwd: "xxxxxx",
net: "tcp",
addr: "xxxx-001-dev.cluster-xx-2.rds.amazonaws.com:3306",
dbname: "xxxx",
allownativepasswords: true,
}
cfg1.tls.minversion = tls.versiontls12
cfg1.tls.maxversion = tls.versiontls12
sql.open("mysql", cfg1.formatdsn())
登錄后復制
錯誤-
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x1 addr=0xf8 pc=0x64ac21]
goroutine 1 [running]:
main.main()
C:/cmb-mmt/chp-schema-validation/main.go:28 +0x61
登錄后復制
我們使用的是 5.7.12 mysql 版本
解決方法
下面的代碼解決了這個問題。并且我能夠成功連接到 mysql。
cfg1 := mysql.Config{
User: cfg.Db.Dev.User,
Passwd: cfg.Db.Dev.Pass,
Net: "tcp",
Addr: "cxx-cxxx-auroramysql-001-dev.xxxxxxxxx.us-west-2.rds.amazonaws.com:3306",
DBName: "xxxx",
AllowNativePasswords: true,
TLSConfig: "skip-verify",
TLS: &tls.Config{MinVersion: tls.VersionTLS12, MaxVersion: tls.VersionTLS12},
}
登錄后復制






