---
title: "Go-SQL-Driver/MySQL 连接 OB Cloud 云数据库示例程序 - OB Cloud 云数据库 master | OceanBase 文档中心"
description: Go-SQL-Driver/MySQL 连接 OB Cloud 云数据库示例程序 本文将介绍如何使用 Go-SQL-Driver/MySQL 驱动和 OB Cloud 云数据库构建一个应用程序，实现创建表、插入数据和查询数据等基本操作。 点击下载 go-oceanbase 示例工程 Go-SQL-Driver/MyS…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*qbZXRo_94ZEAAAAAAAAAAAAADiGDAQ/original) OB Cloud 云数据库

# Go-SQL-Driver/MySQL 连接 OB Cloud 云数据库示例程序

更新时间：2026-06-11 17:06:01

本文将介绍如何使用 Go-SQL-Driver/MySQL 驱动和 OB Cloud 云数据库构建一个应用程序，实现创建表、插入数据和查询数据等基本操作。

 [![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/download.png) 点击下载 go-oceanbase 示例工程](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/Go/go-oceanbase.zip) [![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*DFPmToHK6hgAAAAAAAAAAAAADiGDAQ/original) Go-SQL-Driver/MySQL 连接 OceanBase 数据库示例程序](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/video-center/video/video/05%20go-ob_e05.mp4)  

## 前提条件

创建 OB Cloud 云数据库实例、安装 Go 语言和相关驱动，并确保已经正确配置了环境变量。

- 您已注册 OB Cloud 云数据库账号，并创建集群实例和 MySQL 兼容模式租户。详情请参见 [创建集群实例](https://www.oceanbase.com/docs/common-oceanbase-cloud-10000000001780086) 和 [创建租户](https://www.oceanbase.com/docs/common-oceanbase-cloud-10000000001780107)。
 - 安装 Go 语言
 - 安装 Go-SQL-Driver/MySQL 驱动

## 操作步骤

#### 说明

本文中给出的操作步骤是在 Windows 环境下生成的。如果您使用的是其他操作系统环境或编译器，那么操作步骤可能会略有不同。

1. （可选）安装 Go 语言和驱动。
 2. 获取 OB Cloud 云数据库连接信息。
 3. 修改 `go-oceanbase` 项目中的数据库连接信息。
 4. 运行 `go-oceanbase` 项目。

### 步骤一：（可选）安装 Go 语言和驱动

若您已经安装了 Go 语言和 Go-SQL-Driver/MySQL 驱动，可以直接跳过此步骤。若您未安装，可根据以下步骤进行安装。

1. 安装 Go 语言

      1. 下载 Go 语言安装包：可以从 [Go 官网](https://golang.org/dl/) 下载适合自己操作系统的安装包。

        #### 说明

        本文档使用的 Go 安装包名为 go1.20.6.windows-amd64.msi。
      2. 安装 Go 语言：双击下载的安装包，按照提示进行安装。
      3. 配置环境变量：将 Go 语言的安装路径添加到系统的 PATH 环境变量中。

             - 在 Windows 环境中，可以在 **控制面板 > 系统和安全 > 系统 > 高级系统设置 > 环境变量 > 系统变量** 中增加 Path 的值为 `C:\usr\local\go\bin`。
             - 在 Linux 或 macOS 环境中，可以编辑 `~/.bashrc` 或 `~/.bash_profile` 文件，在其中添加以下内容：

              ```shell
              export PATH=$PATH:/usr/local/go/bin

              ```  

        #### 说明

        `\usr\local\go\bin`为默认安装目录，若在安装 Go 语言时修改了安装目录，请替换为对应的目录。
      4. 验证安装：在 Shell 命令行中输入以下命令，查看 Go 语言的版本信息，以验证安装是否成功：

        ```shell
        C:\Users\admin\> go version
        go version go1.20.6 windows/amd64

        ```
 2. 安装 Go-SQL-Driver/MySQL 驱动

   根据 Go 语言的不同版本，可以选择不同的安装方式，安装 Go-SQL-Driver/MySQL 驱动时需要进入到对应的项目目录下打开命令行终端。关于 `Go-SQL-Driver/MySQL` 的详细信息，您可参考 [Github](https://github.com/go-sql-driver/mysql)。

   安装命令如下：

   ```shell
   C:\Users\admin\Desktop\go-oceanbase>go get -u github.com/go-sql-driver/mysql
   go: downloading github.com/go-sql-driver/mysql v1.7.1
   go: added github.com/go-sql-driver/mysql v1.7.1

   ```

   如果由于版本或网络的原因，无法通过 `go get` 命令安装时，可通过 `go install` 命令进行 `go-sql-driver/mysql` 安装。

      1. 在 `go/src` 目录克隆 github 中的 `go-sql-driver/mysql` 仓库。

        ```bash
        cd /usr/local/go/src
        git clone https://github.com/go-sql-driver/mysql.git

        ```

        #### 注意

        `/usr/local/go/src` 需要替换成 Go 实际安装目录操作。
      2. 通过 `go install` 进行安装。

        ```bash
        go install mysql

        ```

        #### 注意

        部分版本 `go install` 的默认执行目录可能不是 `/src`，可以通过 `go install` 执行后的报错判断实际目录。例如，报错 `cannot find package "mysql" in: /usr/local/go/src/vendor/mysql`，则应该将 mysql 文件夹放在 `/src/vendor` 目录下再执行安装命令。
      3. 检查 Go-SQL-Driver/MySQL 驱动是否已经安装，若安装失败，请按照报错信息进行修改。

        ```bash
        go list -m github.com/go-sql-driver/mysql

        ```

### 步骤二：获取 OB Cloud 云数据库连接信息

1. 登录 [OB Cloud 云数据库控制台](https://console-cn.oceanbase.com/)。在实例列表页面，展开目标实例的信息，在目标租户下，选择 **连接** > **获取连接串**。

   更多详细操作，请参见 [获取连接串](https://www.oceanbase.com/docs/common-oceanbase-cloud-10000000001781435)。
 2. 根据已创建的 OB Cloud 云数据库填写下面 URL 的对应信息。

   ```sql
   obclient  -h{host} -u{username} -p****** -P{port} -D{schema_name}

   ```

   数据库连接串包含了访问数据库所需的参数信息，可通过数据库连接串验证登录数据库，保证连接串参数信息正确。

   #### 说明

   在 `test.go` 文件中需要这里的 URL 信息。

   **参数说明：**

      - `host`：提供 OB Cloud 云数据库连接地址，例如 `t********.********.oceanbase.cloud`。
      - `user_name`：提供访问数据库的账号。
      - `password`：提供账户密码。
      - `port`：提供 OB Cloud 云数据库连接端口，默认为 3306。
      - `schema_name`：需要访问的 Schema 名称。

### 步骤三： 修改 `go-oceanbase` 项目中的数据库连接信息

根据 **步骤二：获取 OB Cloud 云数据库连接信息** 中的信息修改 `test.go` 文件中的数据库连接信息。选中 `test.go` 文件，右键单击选择 **打开方式**，可通过 **记事本** 或其他编辑软件打开。

![test.go](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/Go/testgo.jpg)

**示例如下：**

- 数据库访问的地址为 `t********.********.oceanbase.cloud`。
 - 访问端口使用的是 3306。
 - 需要访问的 Schema 名称为 `test`。
 - 租户的连接账户是 `mysql001`。
 - 密码是 `******`。

**示例代码如下：**

```go
conn := "mysql001:******@tcp(t********.********.oceanbase.cloud:3306)/test"

```

### 步骤四：运行 `go-oceanbase` 项目

代码编辑完成后，在项目目录下打开命令行终端，通过 `go run` 直接运行 Go 文件运行如下命令运行：

```shell
C:\Users\admin\Desktop\go-oceanbase>go run test.go

```

（可选）在 Linux 或 macOS 环境中需要配置临时环境变量后，才能运行 `go run`。

```shell
export PATH=$PATH:/usr/local/go/bin
go run test.go

```

运行后返回如下内容，说明数据库连接成功，示例语句正确执行：

#### 说明

该内容是屏蔽了 “删除表 t1” 运行后的结果。

```shell
C:\Users\admin\Desktop\go-oceanbase>go run test.go
success to connect OceanBase with go_mysql driver
Hello OceanBase

```

## 项目代码介绍

点击 [go-oceanbase](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/Go/go-oceanbase.zip) 下载项目代码。是一个名称为 `go-oceanbase` 的压缩包。

解压后，得到一个名为 `go-oceanbase` 的文件夹。目录结构如下所示：

```go
|-- go.mod
|-- go.sum
|-- test.go

```

**文件说明：**

- `go.mod`：Go 语言模块文件，用于定义项目的模块依赖关系和版本信息。
 - `go.sum`：Go V1.11 及以上版本中新增的模块管理文件，用于记录项目依赖的模块及其版本信息，以及对应的校验和（Checksum）。
 - `test.go`： Go 源代码文件，其中包含项目的示例代码。

### go.mod 代码介绍

`go.mod` 文件用于定义项目的模块名称、Go 版本号以及依赖项相关声明。

`go.mod` 文件包含以下内容：

- `module go-oceanbase`：这是项目的模块名称，它定义了项目的命名空间。在 Go 1.16 及更高版本中，模块名称必须与项目的根目录名称匹配。
 - `go 1.20`：这是项目所需的 Go 版本。
 - `require github.com/go-sql-driver/mysql v1.7.1 // indirect`：这是项目的依赖项声明。它指定了项目所需的 `github.com/go-sql-driver/mysql` 模块版本为 V1.7.1，以及该依赖项是间接依赖项，与另一个依赖项 `go.sum` 相关联。

### go.sum 代码介绍

`go.sum` 文件用于定义 `github.com/go-sql-driver/mysql` 依赖项的版本信息，以确保项目使用正确的依赖项版本。

`go.sum` 文件包含以下内容：

- `github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=` 模块的源代码文件的哈希值，用于确保在构建项目时使用正确的版本。这里的哈希值为 `lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=`。
 - `github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=` 模块的依赖项文件的哈希值，用于确保在构建项目时使用正确的依赖项版本。这里的哈希值为 `OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=`。

### test.go 代码介绍

`test.go` 文件定义了如何使用 Go 语言和 OB Cloud 云数据库的 MySQL 模式进行交互，包括连接数据库、创建表、插入数据、查询数据和删除表等操作。 `test.go` 文件包含以下内容：

1. 定义 `main` 包。 `package main` 表示这是一个可执行程序的包，这个包包含了一个 `main()` 函数，这个函数会在程序运行时被执行。
 2. 定义 `import` 包。

   `import` 语句导入了以下四个包：

      - `database/sql`：用于提供通用的 SQL 数据库访问接口。它定义了一组通用的接口和函数，用于连接和操作各种类型的 SQL 数据库。
      - `fmt`：用于提供格式化输入和输出的函数。它定义了一组函数，用于将数据格式化为字符串并输出到控制台或其他设备。
      - `log`：用于提供记录日志的函数。它定义了一组函数，用于将日志信息输出到控制台或其他设备。
      - `github.com/go-sql-driver/mysql`：用于提供 MySQL 模式的驱动程序。它实现了 `database/sql` 包中定义的接口，以便在 Go 语言中连接和操作 MySQL 模式，这里需要填写正确的 `go-sql-driver/mysql` 的安装路径。

   **代码如下：**

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

   _ "github.com/go-sql-driver/mysql"
   // 填写 go-sql-driver/mysql 的安装路径。
   )

   ```
 3. 定义 `Str` 结构体。 包含字段 `Name`，用于存储查询结果；定义了一个 `main()` 函数，该函数中 `selectAll()` 函数，用于完成创建表、插入数据、查询数据和删除表等操作。

   **代码如下：**

   ```go
   type Str struct {
   Name string
   }

   func main() {
   selectAll()
   }

   ```
 4. 定义 `selectAll()` 函数。

   `selectAll()` 函数它包含了连接数据库、创建表、插入数据、查询数据和删除表等操作。

      1. 连接数据库。 定义连接字符串 `conn`，包含了 MySQL 模式的连接参数，包括用户名、密码、IP 地址、端口号和数据库名称等信息。调用 `sql.Open()` 函数打开数据库连接，如果出错则记录日志并退出程序。使用 `defer` 关键字延迟关闭数据库连接，以确保在函数结束时关闭连接。

        **代码如下：**

        ```go
        conn := "user_name:******@tcp(host:port)/schema_name"
        // 数据库连接参数

        db, err := sql.Open("mysql", conn)
        if err != nil {
            log.Fatal(err)
        }

        ```
      2. 控制台打印消息。 使用 `defer` 关键字延迟执行 `db.Close()` 函数，以确保在函数结束时关闭数据库连接。使用 `fmt.Printf()` 函数输出一条连接成功的消息到控制台。

        **代码如下：**

        ```go
        defer db.Close()

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

        fmt.Printf("success to connect OceanBase with go_mysql driver\n")

        ```
      3. 创建数据。 创建了一个名为 `t1` 的表，设置一个字符串类型的字段 `str`，长度为 `256`。

        **代码如下：**

        ```go
            _, err = db.Query("create table t1(str varchar(256))")
        if err != nil {
            log.Fatal(err)
        }

        ```
      4. 插入数据。 插入一行数据到表 `t1` 中，设置该行数据的 `str` 字段的值为 `Hello OceanBase`。

        **代码如下：**

        ```go
        _, err = db.Query("insert into t1 values ('Hello OceanBase')")
        if err != nil {
            log.Fatal(err)
        }

        ```
      5. 查询数据。 查询表 `t1` 中的所有数据，并将查询结果赋值给变量 `res`。如果查询失败，则返回错误信息。

        **代码如下：**

        ```go
        res, err := db.Query("SELECT * FROM t1")
        if err != nil {
            log.Fatal(err)
        }
        defer res.Close()

        for res.Next() {
            var str Str
            res.Scan(&str.Name)
            fmt.Printf("%s\n", str.Name)
        }

        ```
      6. 删除数据。 删除表 `t1`。如果删除失败，则返回错误信息。

        **代码如下：**

        ```go
        _, err = db.Query("drop table t1")
        if err != nil {
            log.Fatal(err)
        }

        ```

### 完整的代码展示

    go.mod   go.sum   test.go

```go
module go-oceanbase
go 1.20
require github.com/go-sql-driver/mysql v1.7.1 // indirect

```

```go
github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=

```

```go
    package main

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

    type Str struct {
    Name string
    }

    func selectAll() {
    conn := "user_name:******@tcp(host:port)/schema_name"
    // 数据库连接参数

    db, err := sql.Open("mysql", conn)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    fmt.Printf("success to connect OceanBase with go_mysql driver\n")
    // 创建表 t1
    _, err = db.Query("create table t1(str varchar(256))")
    if err != nil {
        log.Fatal(err)
    }

    // 插入数据
    _, err = db.Query("insert into t1 values ('Hello OceanBase')")
    if err != nil {
        log.Fatal(err)
    }

    // 查询数据
    res, err := db.Query("SELECT * FROM t1")
    if err != nil {
        log.Fatal(err)
    }
    defer res.Close()

    // 删除表 t1
    _, err = db.Query("drop table t1")
    if err != nil {
        log.Fatal(err)
    }
    }

```

## 相关文档

有关 Go-SQL-Driver/MySQL 的内容在 OceanBase 数据库开源社区中也有更多信息，详情请参考 [Go-SQL-Driver/MySQL](https://github.com/go-sql-driver/mysql#installation)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
