如何通过SSL将Google Cloud SQL与数据库URL连接?

时间:2015-11-19 06:27:31

标签: mysql ssl google-cloud-sql google-kubernetes-engine dynamic-ip

现在我想将一个rails应用程序部署到Google容器引擎。并使用Google Cloud SQL作为数据库。

当我尝试从Google容器引擎连接Google Cloud SQL时,出现了此错误:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

这是一个解决该问题的文档,但没有关于Google容器引擎的信息:

  

https://cloud.google.com/sql/docs/diagnose-issues#connection

Google Cloud SQL访问SSL连接动态分配的IP地址:

  

https://cloud.google.com/sql/docs/access-control#dynamicIP

所以我需要为mysql实例创建一个客户端证书:

  

https://cloud.google.com/sql/docs/configure-ssl-instance

然后以这种方式连接:

shell> mysql --ssl-ca=server-ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem \
         --host=instance-IP --user=user-name --password
  

https://cloud.google.com/sql/docs/mysql-client#connect

但我想通过我在Google容器引擎上的程序中的mysql数据库网址连接Google Cloud SQL:

mysql2://myapp:password@1.2.3.4/myapp?checkout_timeout=20000

如何使用此方法附加--ssl-ca--ssl-cert--ssl-key

1 个答案:

答案 0 :(得分:0)

Google Cloud SQL在这方面与任何其他MySQL服务器没有什么不同。您将SSL信息作为参数附加到URL的查询部分。在您的示例中,它将是:

mysql2://myapp:password@1.2.3.4/myapp?checkout_timeout=20000&sslca=server-ca.pem&sslcert=client-cert.pem&sslkey=client-key.pem