【发布时间】:2020-05-20 19:42:32
【问题描述】:
在 Debian Buster DBD:mysql 4.0502 上使用 Perl。
my $dbh = DBI->connect_cached(
'DBI:mysql:<db>:<host>;mysql_ssl=1;mysql_ssl_ca_file=/etc/ssl/mysql/server-ca.pem;mysql_ssl_client_cert=/etc/ssl/mysql/client-cert.pem;mysql_ssl_client_key=/etc/ssl/mysql/client-key.pem',
<username>, <pass>);
尝试通过 SSL 连接到 Google Cloud SQL (Mysql) 实例,但我反复收到错误消息:SSL connection error: Error while reading file. 和 SSL connection error: Error in the certificate.
我已经在目录上运行chown 将所有权转移到 mysql:mysql,尝试了各种所有权配置,甚至移动了目录。
我通过 CLI 使用与脚本中相同的参数进行连接,通过脚本通过来自主机的不安全 SSL 进行连接,但是一旦我限制仅通过 SSL 的连接并使用这些命令,就会出现相同的错误。
更新: 在对此进行了更多研究之后,我认为问题在于 Google 如何为其客户端密钥和证书 (Certificate Validation on Cloud SQL) 签署主机名。这里的建议不适用于 Perl 的 DBD::mysql,因为他们决定在使用 SSL (https://github.com/perl5-dbi/DBD-mysql/issues/110) 时强制执行主机名验证。
我仍在寻找解决这个问题的方法,但我现在正在研究未来的私有 IP 和 VPC。
【问题讨论】:
-
您是否尝试过按照本文档了解如何使用 SSL 连接到 Cloud MySQL? cloud.google.com/sql/docs/mysql/connect-admin-ip#connect-ssl
-
我有,并且它列出了 CLI 步骤,这些都成功了。我认为问题在于 Perl mysql 驱动程序。
-
在这种情况下,我建议的解决方法是使用 Cloud SQL 代理:cloud.google.com/sql/docs/mysql/connect-admin-ip
标签: mysql perl google-cloud-platform google-compute-engine google-cloud-sql