在 Debian 上用 Golang 操作数据库,真正容易出问题的地方通常不是代码本身,而是环境、驱动和连接字符串有没有对上。本文按实际动手顺序整理出一套最短路径,从 Go 环境检查、驱动安装到不同数据库的连接示例,方便你快速判断自己卡在哪一步,并尽快跑通第一条数据库连接。
先确认 Debian 上的 Go 环境可用
开始写数据库代码前,先确认 Go 已经正确安装。源码里提到的重点有两个:$GOPATH 和 $GOROOT 环境变量,以及 go version 的输出结果。
如果你还没有安装 Go,可以先去官网下载对应版本。装好之后,打开终端执行下面的命令:
go version
只要能正常输出版本号,通常就说明基础环境已经可用。对于刚接触 Go 的用户,这一步很关键,因为很多“连不上数据库”的排查,最后发现其实是 Go 环境本身没有配置完整。
按数据库类型安装对应驱动
Go 连接数据库时,驱动必须和目标数据库类型一致。也就是说,先确定你要连的是 MySQL、PostgreSQL、SQLite 还是 MongoDB,再安装对应的包。

MySQL 驱动
go get -u github.com/go-sql-driver/mysql
PostgreSQL 驱动
go get -u github.com/lib/pq
SQLite 驱动
go get -u github.com/mattn/go-sqlite3
MongoDB 驱动
go get -u go.mongodb.org/mongo-driver/mongo
go get -u go.mongodb.org/mongo-driver/mongo/options
这里可以先记住一个简单判断:关系型数据库示例会围绕 database/sql 展开,而 MongoDB 的连接方式则使用官方的 mongo-driver。
根据数据库类型写连接代码
驱动装好后,就可以新建 main.go,用最小示例先完成连接测试。下面几段代码保留了原始连接方式,适合先验证环境和账号信息是否正确。

MySQL 连接示例
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to the database!")
}
这段代码的关键,是通过 sql.Open("mysql", ...) 指定驱动名称,并在后面传入 MySQL 连接字符串。执行 db.Ping() 成功,才表示数据库真的可达。
PostgreSQL 连接示例
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "user=username dbname=dbname password=password sslmode=disable")
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to the database!")
}
PostgreSQL 示例和 MySQL 的结构基本一致,区别主要在于驱动名是 postgres,连接参数的写法也不同。
SQLite 连接示例
package main
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./test.db")
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Connected to the database!")
}
SQLite 的特点是直接操作本地数据库文件,因此这里传入的是 ./test.db 路径,而不是远程地址和端口。
MongoDB 连接示例
package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
)
func main() {
clientOptions := options.Client().ApplyURI("mongodb://username:password@localhost:27017")
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(context.TODO())
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to the MongoDB!")
}
MongoDB 的示例与前面三种数据库不同,它不通过 database/sql 接口连接,而是直接使用官方驱动创建客户端,再通过 Ping 验证连通性。
运行程序并确认连接结果
代码写完后,切换到项目目录,直接执行:
go run main.go
如果终端能看到连接成功提示,就说明当前示例已经跑通。到这一步,你至少已经完成了三件事:Go 环境可用、驱动安装正确、数据库连接参数有效。
接下来再继续扩展查询、插入、更新、删除等业务逻辑,会比一开始就写完整功能更容易排查问题。对于第一次在 Debian 上搭建 Go 数据库开发环境的用户,这也是最省时间的一种起步方式。













