更新时间:2026-10-21 GMT+08:00
以非加密方式连接
方式一
通过DSN/URL连接串配置连接参数。例如,用户自行设置IP地址、端口号、用户名和密码对应的[GOXX]环境变量,并在业务代码中通过os.Getenv()方法获取对应变量值进行DSN/URL连接串的拼接,步骤如下:
- 设置连接串拼接所需的环境变量。
export GOHOSTIP="XXX.XXX.XXX.XXX" export GOPORT=XXX export GOUSRNAME="XXX" export GOPASSWD="XXXXXXX"
- 引用Go驱动模块以及其他依赖标准库。
package main //依赖包根据环境中依赖包路径设置。 import ( "database/sql" _ [go驱动模块名] //请根据go驱动实际模块名替换。 "os" "log" )
- database/sql:Golang标准库,提供通用的数据库操作接口,定义与数据库交互的核心方法(例如Query()、Exec()、Prepare()等)。
- _ "[go驱动模块名]":Go驱动模块。
- os:Golang标准库,提供与操作系统交互的功能(文件操作、环境变量)。本示例中os包用于从环境变量获取参数值,驱动不依赖此包。
- log:Golang标准库,提供日志记录功能,常用于输出错误信息或调试日志。本示例中log包用于打印日志,驱动不依赖此包。
- 调用os.Getenv()方法从环境变量获取IP地址、端口号、用户名、密码。
hostip := os.Getenv("GOHOSTIP") port := os.Getenv("GOPORT") usrname := os.Getenv("GOUSRNAME") passwd := os.Getenv("GOPASSWD") - 采用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方法输出错误信息。 } - 调用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地址、端口号、数据库名、其他参数,步骤如下:
- 设置环境变量。
export PGHOST="XXX.XXX.XXX.XXX" export PGPORT=XXX export PGDATABASE="XXX" export PGSSLMODE="disable" export GOUSRNAME="XXX" export GOPASSWD="XXXXXXX"
- 引用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包用于打印日志,驱动不依赖此包。
- 调用os.Getenv()方法获取用户名、密码。
usrname := os.Getenv("GOUSRNAME") passwd := os.Getenv("GOPASSWD") - 采用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方法输出错误信息。 } - 调用db.Ping()验证数据库建连是否成功。
err = db.Ping() if err != nil { log.Fatal(err) //err不为nil表明连接失败,则会执行log.Fatal输出连接失败的原因。 }
步骤2-步骤5为示例中的业务逻辑代码。
父主题: 连接数据库