将 Google CloudSQL Postgres 数据库连接到 Data Studio

Posted

技术标签:

【中文标题】将 Google CloudSQL Postgres 数据库连接到 Data Studio【英文标题】:Connect a Google CloudSQL Postgres database to Data Studio 【发布时间】:2019-03-16 13:12:54 【问题描述】:

我正在尝试将托管在 google Cloud Sql 实例中的 Postgres 数据库连接到 Data Studio。 我已按照说明进行操作(在此处找到 https://support.google.com/datastudio/answer/7288010),但令我失望的是,我仍然无法从 Data Studio 连接到数据库。

我认为问题出在 SSL 连接上,好像我在 CloudSql 的选项中启用了“非安全连接”,我可以从 Data Studio 成功连接。

我已经创建了 ssl 连接工作所需的 3 个文件:

客户端证书 客户端密钥 服务器证书

我已将它们上传到数据洞察连接页面的相关字段中: 当我按下身份验证时,我收到一条错误消息: Please make sure that the private key is in PKCS8 format.

我尝试通过运行以下命令更改客户端密钥文件的格式: openssl pkcs8 -topk8 -inform PEM -outform DER -in client-key.pem -out client-key.pkcs8 -nocrypt

但是我得到一个错误: Can't reach the host. Please double check your connection parameters. Learn more about database connectors here.

最后必须注意的是,如果我尝试使用 ssl 和完全相同的密钥从本地计算机连接到数据库,但客户端密钥为 pem 格式,我可以连接成功。

我也应该将证书转换为其他格式吗? 我觉得通过 SSL 将 Postgres db 连接到 Data Studio 应该不难,我是否遗漏了一些明显的东西?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

(首先获得证书)

如果您使用 GCP Cloud Postgres 连接,如下所示:

    转到您的 GCP 控制台 -> SQL 点击进入您的数据库实例 -> 连接 向下滚动到“配置 SSL 客户端证书” 点击“创建客户端证书”,为其命名,然后下载输出

【讨论】:

【参考方案2】:

最终证明,只需更改客户端密钥的格式即可。 上面不行的原因是改变格式的命令错误。

应该是:

openssl pkcs8 -topk8 -inform PEM -outform PEM -in client-key.pem -out client-key.key -nocrypt

(请注意问题中发布的 PEM 而不是 DER 参数)。

所以 Data Studio 连接有效!快乐的日子!

【讨论】:

虽然连接器配置会抱怨客户端密钥不是 PKCS8 格式,但它不会抱怨 PKCS8 是 DER 而不是 PEM,这真的很烦人。 Google DataStudio 社区页面上有很多人对此有疑问。谢谢托马斯的回答,我希望我在浪费一天多的时间之前已经阅读过。 您能否提供有关您如何开始获取 PEM 文件的任何信息? @blong 你可能已经猜到了,但是你从 SQL->Connections 页面下载了它 @ChrisMcCauley 干杯,感谢您提供的额外信息!

以上是关于将 Google CloudSQL Postgres 数据库连接到 Data Studio的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud SQL 列级加密

从在 Google Cloud Run 上运行的 Spring Boot 应用程序连接到没有 GCP 启动器的 Cloudsql

Google Cloud SQL 维护时段

如何为Google App Engine实例指定区域?

GAE Django cloudsql 套接字

Google Cloud支持的数据类型?