我正在尝试使用以下软件包将我的 VM (Debain 9( 服务器上的 go 应用程序连接到我的 mysql 数据库:github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql
查看连接功能:
// Cfg returns the effective *mysql.Config to represent connectivity to the
// provided instance via the given user and password. The config can be
// modified and passed to DialCfg to connect. If you don't modify the returned
// config before dialing, consider using Dial or DialPassword.
func Cfg(instance, user, password string) *mysql.Config {
我假设我输入了在 GCP 实例连接数据库页面上找到的实例"实例连接名称":` 包主
import (
"fmt"
"os"
"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql"
)
func main() {
cfg := mysql.Cfg("MyAccount:us-west2:myDatabase", "root", os.Getenv("GCPDBPass"))
db, err := mysql.DialCfg(cfg)
if err != nil {
panic(err)
}
fmt.Print(db)
}
在哪里找到我的实例连接名称
我收到一个错误: panic: ensure that the account has access to "MyAccount" (and make sure there's no typo in that name)
我已将虚拟机实例 IP 连接到数据库中的授权网络,因此我不知道我是否在此包中使用了正确的实例或用户。
就我而言,问题是由于"github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql"
包的较低版本。使用命令升级包go get -v -u github.com/GoogleCloudPlatform/cloudsql-proxy
解决了该问题。下面是代码片段
"database/sql"
_ "github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql"
connString := "user:password@cloudsql(project_id:region:instance)/dbname?charset=utf8&parseTime=True&loc=Local"
db, err := sql.Open("mysql", connectionString)