【问题标题】:How to connect to Google Cloud SQL with go-sql-driver/mysql on App Engine?如何在 App Engine 上使用 go-sql-driver/mysql 连接到 Google Cloud SQL?
【发布时间】:2014-02-17 13:17:39
【问题描述】:

我在 App Engine 上的 Go 中使用 go-sql-driver/mysql 驱动程序连接到 Cloud SQL 实例,如下所示:

import (
   "database/sql"
   _ "github.com/go-sql-driver/mysql"
)

db, dbErr := sql.Open("mysql", "root@cloudsql(project:instance)/database"
...
pingErr := db.Ping()

但我在pingErr 中收到“permission denied”。

当然,我已经在 Cloud SQL 控制台的“访问控制”per the docs 下检查了我的应用是否已获得授权。我还尝试添加具有特权的 MySQL 用户并使用user:password 代替root,甚至不指定用户。

我做错了什么?

...

更新:

根据@Kyle 的建议,我尝试了一个备用驱动程序ziutek/mymysql,它适用于以下代码:

import (
   "database/sql"
   _ "github.com/ziutek/mymysql/godrv"
   _ "github.com/ziutek/mymysql/mysql"
   _ "github.com/ziutek/mymysql/native"
)

db, dbErr := sql.Open("mymysql", "cloudsql:project:instance*database/user/password"

如果我能找出问题所在,是时候在 go-sql-driver/mysql 上提出拉取请求了!任何见解或经验都值得赞赏!

【问题讨论】:

  • 我还应该注意,我能够以 root 和我创建的用户身份连接 mysql CLI,所以我认为这不是数据库设置问题。

标签: google-app-engine go google-cloud-sql


【解决方案1】:

这是一个版本问题

如果您仔细观察,App Engine 支持是 added to the master branchthe latest release is 1.1 不包括在内。

您需要手动将git clone https://github.com/go-sql-driver/mysql(主分支)放入$GOPATH/src/,而不是go get github.com/go-sql-driver/mysql,然后然后部署到App Engine!

来自作者的This comment 给了我提示,@Kyle 建议尝试另一个驱动程序(有效)促使我重新阅读所有内容 - 谢谢!

【讨论】:

  • go-sql-driver/mysql 是不是也这样?
【解决方案2】:

您提供给 sql.Open 的 DSN(数据源名称)与文档中的不同:

import "database/sql"
import _ "<some mysql package>"

db, err := sql.Open("mysql", "cloudsql:my-instance*dbname/user/passwd")

来源:Go AppEngine Cloud SQL Reference

编辑:您似乎在为您的 SQL 包使用正确的 DSN 格式,如 here 所述。我当时的猜测是它正确连接到数据库,但要么用户未被接受,要么出于某种原因,没有正确的权限。

【讨论】:

  • 谢谢@Kyle - 带我跑了几次,从那个文档中注意到了这一点:“sql.Open 的第二个参数的确切格式取决于驱动程序;有关详细信息,请参阅驱动程序文档。”我确实在早期尝试了一些变体,但现在指的是 go-sql-driver DSN 格式。
  • @jkoreska 您是否尝试过其他驱动程序以确定是驱动程序问题还是数据库设置或用户名/密码问题?
  • 不,我还没有,但这是一个很好的建议!我认为这样做很好:github.com/go-sql-driver/mysql/commit/…
  • 可爱 - 它适用于github.com/ziutek/mymysql!像这样:sql.Open("mymysql", "cloudsql:project:instance*database/user/password")
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多