小编典典

无法使用Google App Engine的SSL + Golang连接到Google Cloud SQL

go

Google表示您可以使用Golang等连接到Google Cloud SQL,go-sql-driver如下所示:

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

db, err := sql.Open("mysql", "user@cloudsql(project-id:instance-name)/dbname")

参考:https :
//cloud.google.com/appengine/docs/go/cloud-
sql/reference

…但是,这(对我而言)会生成x509证书错误:

x509:证书对projectName:instanceName有效,而不对projectName有效

我不知道如何解决这个问题。根据Google自己的文档,在连接字符串中再次添加实例名称(即使已经存在)也无济于事。

有没有人设法做到这一点?怎么了?


阅读 214

收藏
2020-07-02

共1个答案

小编典典

您正在使用SSL连接吗?该错误信息表明, 除了 指定inside 之外ServerName还必须在
使用mysql驱动程序注册自定义TLSConfig时设置属性。project-id:instance-name``sql.Open()

例如,使用docs中的TLS设置,但ServerName在您的调用中添加一个RegisterTLSConfig

mysql.RegisterTLSConfig("custom", &tls.Config{
            RootCAs:      rootCertPool,
            Certificates: clientCert,
            ServerName:   "projectName:instanceName",
        })

然后追加 ?tls=nameOfYourCustomTLSConfig

db, err := sql.Open("mysql", "user@cloudsql(project-id:instance-name)/dbname?tls=custom")
2020-07-02