温馨提示×

linux golang怎么连接数据库

小樊
49
2026-10-21 17:39:17
栏目: 编程语言

在 Linux 环境下使用 Golang 连接数据库,通常取决于你使用的是哪种数据库。下面以最常见的几种为例:MySQL、PostgreSQL、SQLite,并说明基本步骤。


一、通用前置条件(Linux)

  1. 安装 Go(已安装可忽略)
go version
  1. 初始化 Go 模块
mkdir demo && cd demo
go mod init demo

二、连接 MySQL(最常用)

1. 安装驱动

go get -u github.com/go-sql-driver/mysql

2. 示例代码

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()

    if err = db.Ping(); err != nil {
        log.Fatal(err)
    }

    fmt.Println("MySQL connected")
}

三、连接 PostgreSQL

1. 安装驱动

go get -u github.com/lib/pq

2. 示例代码

package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/lib/pq"
)

func main() {
    dsn := "host=localhost port=5432 user=postgres password=123456 dbname=test sslmode=disable"
    db, err := sql.Open("postgres", dsn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    if err = db.Ping(); err != nil {
        log.Fatal(err)
    }

    fmt.Println("PostgreSQL connected")
}

四、连接 SQLite(本地文件)

1. 安装驱动

go get -u github.com/mattn/go-sqlite3

2. 示例代码

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")
}

五、推荐使用 ORM(更方便)

如果你不想手写 SQL,可以用:

  • GORM(最流行)
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

示例:

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

六、常见问题(Linux)

  1. 连接被拒绝

    • 数据库是否启动
    • 防火墙 / 端口
    • 用户是否有远程权限
  2. 时区错误(MySQL)

dsn := "user:pass@tcp(127.0.0.1:3306)/db?parseTime=true"

如果你告诉我:

  • 使用的 数据库类型
  • 是否 远程连接
  • 是否使用 GORM / 原生 SQL

我可以给你更精确的示例。

0 踩