现在我想将rails应用程序部署到Google Container Engine。并使用Google Cloud SQL作为数据库。
当我试图从谷歌容器引擎连接谷歌云SQL时,我得到了这个错误:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
这里有一个文件来解决这个问题,但没有关于谷歌容器引擎的信息:
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
但我想通过mysql数据库url连接谷歌云SQL,该url来自我在谷歌容器引擎上的程序:
mysql2://myapp:password@1.2.3.4/myapp?checkout_timeout=20000
如何用这种方法连接--ssl-ca
、--ssl-cert
、--ssl-key
?
谷歌云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