在 Ubuntu 上使用 Golang 连接数据库,一般步骤是:安装数据库 → 安装 Go 数据库驱动 → 写代码连接。下面以最常见的 MySQL 和 PostgreSQL 为例说明,并附带 SQLite 作为轻量方案。
sudo apt update
sudo apt install golang-go
验证:
go version
sudo apt install mysql-server
sudo systemctl start mysql
go get -u github.com/go-sql-driver/mysql
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := "user:password@tcp(127.0.0.1:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("MySQL connected successfully")
}
sudo apt install postgresql postgresql-contrib
go get -u github.com/lib/pq
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
connStr := "user=postgres password=123456 dbname=test sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("PostgreSQL connected successfully")
}
go get -u github.com/mattn/go-sqlite3
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, err := sql.Open("sqlite3", "./test.db")
if err != nil {
log.Fatal(err)
}
defer db.Close()
fmt.Println("SQLite connected")
}
如果你不想写原生 SQL,可以使用:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
示例:
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
sql.Open 不报错但连不上?✅ 一定要调用 db.Ping()
sudo ufw allow 3306
go mod init project
go mod tidy
如果你告诉我:
我可以给你更精确的示例。