云数据库 GAUSSDB-连接数据库(以SSL方式):客户端配置

时间:2024-11-02 18:46:34

客户端配置

上传证书文件,将在服务端配置(服务端配置请联系管理员)操作中生成的文件client.key、client.crt、cacert.pem放置在客户端。

示例一:

package main
//依赖包根据环境中依赖包路径设置。
import (
 "database/sql"
 "fmt"
 _ "gitee.com/opengauss/openGauss-connector-go-pq"
 "log"
)
// 以双向认证为例,本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)。
func main() {
 hostip := os.Getenv("GOHOSTIP")   //GOHOSTIP为写入环境变量的IP地址。
 port := os.Getenv("GOPORT")       //GOPORT为写入环境变量的port。
 usrname := os.Getenv("GOUSRNAME") //GOUSRNAME为写入环境变量的用户名。
 passwd := os.Getenv("GOPASSWD")   //GOPASSWDW为写入环境变量的用户密码。
 sslpasswd := os.Getenv("GOSSLPASSWD") //GOSSLPASSWDW为写入环境变量的密码短语。
 dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " sslcert=certs/client.crt sslkey=certs/client.key sslpassword=" + sslpasswd
 parameters := []string {
  " sslmode=require",
  " sslmode=verify-ca sslrootcert=certs/cacert.pem",
 }

 for _, param := range parameters {
  db, err:= sql.Open("opengauss", dsnStr+param)
  if err != nil {
   log.Fatal(err)
  }

  var f1 int
  err = db.QueryRow("select 1").Scan(&f1)
  if err != nil {
   log.Fatal(err)
  } else {
   fmt.Printf("RESULT: select 1: %d\n", f1)
  }

  db.Close()
 }
}

示例二:

package main
//依赖包根据环境中依赖包路径设置。
import (
 "database/sql"
 _ "gitee.com/opengauss/openGauss-connector-go-pq"
 "log"
 "strings"
)
// 以验证sslpassword为主,本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)。
func main() {
 hostip := os.Getenv("GOHOSTIP")   //GOHOSTIP为写入环境变量的IP地址。
 port := os.Getenv("GOPORT")       //GOPORT为写入环境变量的port。
 usrname := os.Getenv("GOUSRNAME") //GOUSRNAME为写入环境变量的用户名。
 passwd := os.Getenv("GOPASSWD")   //GOPASSWDW为写入环境变量的用户密码。
 dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=postgres"

 sslpasswd := os.Getenv("GOSSLPASSWD") //GOSSLPASSWDW为写入环境变量的密码短语。
 connStrs := []string {
  " sslmode=verify-ca sslcert=certs/client_rsa.crt sslkey=certs/client_rsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_rsa.pem",
  " sslmode=verify-ca sslcert=certs/client_ecdsa.crt sslkey=certs/client_ecdsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_ecdsa.pem",
 }
 for _, connStr := range connStrs {
  db, err := sql.Open("opengauss", dsnStr + connStr)
  if err != nil {
   log.Fatal(err)
  }
  var f1 int
  err = db.QueryRow("select 1").Scan(&f1)
  if err != nil {
   if !strings.HasPrefix(err.Error(), "connect failed.") {
    log.Fatal(err)
   }
  }
  db.Close()
 }
}
support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0237.html