> 在 Go 语言中,也可以使用原生的 net 和 database/sql 包连接 MySQL 数据库,不需要依赖第三方库。下面是一个连接 MySQL 数据库的示例程序: ```go package main import ( "database/sql" "fmt" "net" ) func main() { // 定义数据库连接参数 user := "root" password := "password" host := "127.0.0.1" port := 3306 database := "test" // 创建数据库连接 conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", host, port)) if err != nil { panic(err.Error()) } // 连接成功后发送握手消息 handshake := NewHandshakeMessage(user, password, database) _, err = conn.Write(handshake.Bytes()) if err != nil { panic(err.Error()) } // 接收服务端响应并解析 buf := make([]byte, 1024) n, err := conn.Read(buf) if err != nil { panic(err.Error()) } response := ParseHandshakeResponse(buf[:n]) // 创建数据库连接 dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", user, password, host, port, database) db, err := sql.Open("mysql", dsn) if err != nil { panic(err.Error()) } defer db.Close() // 设置连接参数 db.SetConnMaxLifetime(1000) db.SetMaxIdleConns(10) db.SetMaxOpenConns(100) // 测试数据库连接 err = db.Ping() if err != nil { panic(err.Error()) } fmt.Println("Database connected successfully!") } ``` 在上面的示例程序中,我们使用 `net.Dial` 函数连接 MySQL 数据库服务器,然后发送握手消息,并接收服务端的响应,并解析出连接参数。接下来,我们使用 `database/sql` 包创建一个数据库连接对象 db,并设置连接参数。最后,我们使用 `db.Ping` 函数测试数据库连接,如果测试连接时出现错误,同样使用 panic 函数抛出异常并终止程序。否则,我们输出一条连接成功的提示信息。 > 在实际开发中,建议使用 `github.com/go-sql-driver/mysql `包或其他第三方库连接 MySQL 数据库,因为这些库已经提供了完善的连接池和错误处理机制,能够更好地满足实际需求。