更新时间:2026-10-21 GMT+08:00
分享

以非加密方式连接

方式一

通过DSN/URL连接串配置连接参数。例如,用户自行设置IP地址、端口号、用户名和密码对应的[GOXX]环境变量,并在业务代码中通过os.Getenv()方法获取对应变量值进行DSN/URL连接串的拼接,步骤如下:

  1. 设置连接串拼接所需的环境变量。

    export GOHOSTIP="XXX.XXX.XXX.XXX"
    export GOPORT=XXX
    export GOUSRNAME="XXX"
    export GOPASSWD="XXXXXXX"

  2. 引用Go驱动模块以及其他依赖标准库。

    package main
    //依赖包根据环境中依赖包路径设置。
    import (
       "database/sql"
       _ [go驱动模块名] //请根据go驱动实际模块名替换。
       "os"
       "log"
    )
    • database/sql:Golang标准库,提供通用的数据库操作接口,定义与数据库交互的核心方法(例如Query()、Exec()、Prepare()等)。
    • _ "[go驱动模块名]":Go驱动模块。
    • os:Golang标准库,提供与操作系统交互的功能(文件操作、环境变量)。本示例中os包用于从环境变量获取参数值,驱动不依赖此包。
    • log:Golang标准库,提供日志记录功能,常用于输出错误信息或调试日志。本示例中log包用于打印日志,驱动不依赖此包。

  3. 调用os.Getenv()方法从环境变量获取IP地址、端口号、用户名、密码。

    hostip := os.Getenv("GOHOSTIP")   
    port := os.Getenv("GOPORT")       
    usrname := os.Getenv("GOUSRNAME") 
    passwd := os.Getenv("GOPASSWD")   

  4. 采用DSN格式或URL格式定义连接字符串,调用sql.Open() 函数创建数据库连接对象。

    str := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb sslmode=disable" //DSN连接串。用户需要自行设置dbname和sslmode关键字的取值。
    // str := "gaussdb://" + usrname + ":" + passwd + "@" + hostip + ":" + port + "/gaussdb?sslmode=disable" //URL连接串。用户需要自行设置数据库名称和sslmode的取值。
    db, err := sql.Open("gaussdb", str)  //创建数据库连接对象,但不会立即建立数据库连接。
    if err != nil {
        log.Fatal(err) //执行报错时,使用log.Fatal方法输出错误信息。
    }   

  5. 调用db.Ping()验证数据库建连是否成功。

    err = db.Ping()  
    if err != nil {
        log.Fatal(err)  //err不为nil表明连接失败,则会执行log.Fatal输出连接失败的原因。
    }

步骤2-步骤5为示例中的业务逻辑代码。

方式二

部分连接参数通过环境变量[PGXX]设置参数值,并且这部分参数在DSN/URL连接串中不进行配置。例如DSN/URL连接串配置用户名和密码,通过环境变量PGHOST、PGPORT、PGDATABASE、PGXX分别指定IP地址、端口号、数据库名、其他参数,步骤如下:

  1. 设置环境变量。

    export PGHOST="XXX.XXX.XXX.XXX"
    export PGPORT=XXX
    export PGDATABASE="XXX"
    export PGSSLMODE="disable"
    export GOUSRNAME="XXX"
    export GOPASSWD="XXXXXXX"

  2. 引用Go驱动模块以及其他依赖标准库。

    package main
    //依赖包根据环境中依赖包路径设置。
    import (
       "database/sql"
       _ [go驱动模块名] //请根据go驱动实际模块名替换。
       "os"
       "log"
    )
    • database/sql:Golang标准库,提供通用的数据库操作接口,定义与数据库交互的核心方法(例如Query()、Exec()、Prepare()等)。
    • _ "[go驱动模块名]":Go驱动模块,通过此步骤将Go驱动模块指向本地Go驱动目录。
    • os:Golang标准库,提供与操作系统交互的功能(文件操作、环境变量)。本用例中os包用于从环境变量获取参数值,驱动不依赖此包。
    • log:Golang标准库,提供日志记录功能,常用于输出错误信息或调试日志。本用例中log包用于打印日志,驱动不依赖此包。

  3. 调用os.Getenv()方法获取用户名、密码。

    usrname := os.Getenv("GOUSRNAME") 
    passwd := os.Getenv("GOPASSWD")   

  4. 采用DSN格式或URL格式定义连接字符串,并调用sql.Open() 函数创建数据库连接对象。

    str := " user=" + usrname + " password=" + passwd //DSN连接串。
    // str := "gaussdb://" + usrname + ":" + passwd  //URL连接串。
    db, err := sql.Open("gaussdb", str)  //创建数据库连接对象,但不会立即建立数据库连接。
    if err != nil {
        log.Fatal(err)  //执行报错时,使用log.Fatal方法输出错误信息。
    }

  5. 调用db.Ping()验证数据库建连是否成功。

    err = db.Ping()  
    if err != nil {
          log.Fatal(err)  //err不为nil表明连接失败,则会执行log.Fatal输出连接失败的原因。
    }

步骤2-步骤5为示例中的业务逻辑代码。

相关文档