我在App Engine上运行Go应用程序,并运行第一代CloudSQL实例。我可以使用TCP连接从dev连接到SQL服务器,指定SQL服务器的IP。但我无法使用CloudSQL驱动程序从已部署的实例进行连接。
示例代码
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
_ "google.golang.org/appengine/cloudsql"
)
if (dev) {
sql.Open("mymysql", "tcp:1.2.3.4:3306*database/user/pass")
} else {
sql.Open("mymysql", "cloudsql:project-id:instance-name*database/user/pass")
}
(是的,我正在用database
,user
,pass
,project-id
和instance-name
替换我的真实代码中的正确值< / p>
在本地运行时(通过goapp serve
)我可以连接并查询数据库 - 一切都很好。
但是,从部署的实例连接时,我收到以下错误:
从MySQL服务器收到#1045错误:“访问被拒绝用户'readonly'@'localhost'(使用密码:是)”
我确保我的App Engine实例已获得授权(SQL&gt;实例&gt;访问控制&gt;授权),并且我在两种情况下都使用相同的用户。
我在Diagnosing Issues with Cloud SQL Instances页面上发现了类似我的错误消息的内容,但建议的解决方案是在启用SSL时连接SSL(我没有为服务器启用SSL)。
如果收到如下错误消息:
ERROR 1045 (28000): Access denied for user 'root'@'1.2.3.4' (using password: YES)
连接时,请确认您使用的是正确的 密码,如果实例需要,您通过SSL连接 它
看到这给我带来了太多麻烦,我还尝试通过App Engine实例的IP地址进行连接,但套接字连接被拒绝。