数据库
首页 > 数据库> > mysql-无法从Google App Engine使用SSL Golang连接到Google Cloud SQL

mysql-无法从Google App Engine使用SSL Golang连接到Google Cloud SQL

作者:互联网

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

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: certificate is valid for projectName:instanceName, not
projectName

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

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

解决方法:

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

例如使用TLS设置from the docs,但在对RegisterTLSConfig的调用中添加ServerName:

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")

标签:google-cloud-sql,go,google-app-engine,mysql
来源: https://codeday.me/bug/20191027/1941298.html