Heroku和Google Datastudio的PostgreSQL集成

37
我试图将现有的Heroku数据库连接到Google Datastudio,但遇到了问题。我尝试添加连接,但却收到以下错误消息:

拒绝访问,请检查您的用户名和密码。

现在,我对这些凭据是100%正确的,问题来自其他地方。
我已经尝试使用不同的设置,包括免费或付费的PSQL实例,但无论如何都不起作用。
我还在elephantsql上设置了一个虚拟帐户,连接第一次工作时没有出现任何问题。
你有任何关于这个问题的想法吗?
编辑:
刚刚发现了https://www.en.advertisercommunity.com/t5/Data-Studio/Heroku-Postgres-lt-gt-Google-Data-Studio/m-p/1031729,但对撰写此帖子时并不有用。

你能接受我的答案吗? - Lee
1
@nobe4请接受mfazekas的答案。那个确实有效。当Lee说“它不起作用”时,那只是谎言。 - tolgap
4个回答

72
2018年2月6日更新后,Google DataStudio允许与PostgreSQL进行SSL连接,这对于连接通过Heroku创建的数据库是必要的。
要启用SSL,您需要提供客户端密钥+证书和服务器证书,可以通过以下步骤实现:
1. 使用openssl生成自签名证书+密钥作为客户端密钥+证书:
openssl req \
       -newkey rsa:2048 -nodes -keyout client.key \
       -x509 -days 365 -out client.crt

使用postgres_get_server_cert.py脚本从Heroku psql获取自签名服务器证书:

https://raw.githubusercontent.com/thusoy/postgres-mitm/master/postgres_get_server_cert.py


3
这个解决方案对我有用。只需确保在 Python 2 中运行 postgres_get_server_cert.py 即可。 - gtalarico
29
我认为了解如何调用Python脚本也是很有帮助的,因为似乎没有任何相关文档。打开终端并使用以下命令:python postgres_get_server_cert.py {aws-database-server}:{port} > aws-cert.crt,将{aws-database-server}:{port}替换为你的服务器和端口。这将输出证书到名为aws-cert.crt的文件中。 - Russell
1
看起来Heroku最近移除了一些用于连接的TLS协议,这破坏了这个脚本。有人有解决方案吗? - JohnDoe
1
2023年7月更新 - 我只执行了第二步,并将生成的证书上传到DataStudio的SSL字段中。终于能够成功连接了。 - a.fahmiin
不必使用Python脚本,你可以像这样使用纯openssl: openssl s_client -starttls postgres -connect my.postgres.host:5432。 来源:https://dba.stackexchange.com/a/243139/225179。这个解决方案对我在Heroku Postgres 12 Premium-2上起作用。 - undefined
显示剩余11条评论

8
问题在于Heroku Postgres需要一个SSL连接,但目前似乎Data Studio无法实现这一点。希望Google能尽快添加这个选项。

我刚遇到了这个问题。我尝试通过设置带有“&ssl=true”的JDBC连接字符串来强制使用SSL,但仍然出现错误:{"reason":28,"errorStatus":{"reason":28,"code":3,"reasonStr":"JDBC_HOST_NOT_REACHABLE","errorCategoryStr":"USER_CONFIGURATION","category":2,"uniqueErrorCode":"...","errorCategoryCode":"2013"},"params":{"errorId":"0d539e57"}} - Jeremy
这是帖子链接:https://www.en.advertisercommunity.com/t5/forums/v3_1/forumtopicpage/board-id/Data-Studio/page/1/thread-id/3235 - Andrei
谷歌现在已经添加了通过SSL连接的选项。 - DMTintner

0

我想提一下,我已经使用这个工具有一段时间了,但是每当我的数据库进行维护时,它就会出问题,我必须手动重新连接证书。我开发了一种更好的方法 - 将数据连接到 Google BigQuery 并在那里进行组合,然后使用 BigQuery 社区连接器。这样做效果更好,您现在可以对混合数据使用查询参数。

当然,DataStudio 由于相同的原因也无法直接连接到 Heroku Postgres,因此我使用一个称为 Fivetran 的服务来获取原始数据并将其发送到 Google BigQuery。当然,这是需要付费的,但对于某些项目而言可能是值得的。在某个时候,我将把自己的数据库从 Heroku 迁移到 AWS 或 Google 自身以允许直接连接,但这是一个更大的项目。


0
确保在一行上运行openssl命令以生成client.keyclient.crt。我尝试了几次下载证书(无法访问主机错误),但最终通过这种方式成功连接到了使用GDS的Heroku Postgres。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接