Power Bi导入PostgreSQL数据出错 - 远程证书根据验证过程无效。

9

我正在尝试将PostgreSQL数据库连接到Power Bi,该数据库托管在Heroku上。我遇到了以下错误-

An error happened while reading data from the provider: 
'The remote certificate is invalid according to the validation procedure.

我认为我得到这个错误是因为需要 "sslmode=require",但是我不确定应该如何继续。

是否有人能够帮助我解决这个问题。

先行致谢。

4个回答

13
这些步骤应该可以帮助您通过ODBC连接到Power BI桌面。请注意,您应该在Heroku中创建一个跟随者数据库,以便您不使用生产数据库凭据。
  1. 下载并安装PostgreSQL ODBC驱动程序。请确保在安装过程中勾选GAC选项。(https://www.postgresql.org/ftp/odbc/versions/msi/)
  2. 重启计算机。
  3. 打开Power BI并单击功能区中的“获取数据”按钮。
  4. 单击“其他”,然后选择“ODBC”。
  5. 将数据源名称选择为“None”。
  6. 单击“高级选项”,输入此连接字符串:Driver={PostgreSQL Unicode};Server=HEROKU_HOST,其中HEROKU_HOST是您的Heroku数据库凭据中的“Host”(例如:ec2-xx-xxx-xx-xx.xxx.amazon.com)。
  7. 在下一个屏幕上,输入用户名(Heroku db凭据中的用户),密码(Heroku db凭据中的密码)以及以下连接字符串(用HEROKU_XXXX替换您的信息)。:PORT=HEROKU_PORT;DATABASE=HEROKU_DATABASE;POOLING=True;MINPOOLSIZE=1;MAXPOOLSIZE=20;HOST=HEROKU_HOST;COMPATIBLE=2.2.3.0;USER ID=HEROKU_USER;PASSWORD=HEROKU_PASSWORD;SSLMODE=require

1
这对我很有效。我尝试过其他复杂的方法。我将Heroku凭据设置为只读,并按上述方式使用。如果您有一个小型数据库,则不需要跟随者数据库,对于较大的数据库,跟随者可以确保PowerBI查询不会减慢您的生产服务器。或者根据您需要的安全性等情况而定。 - Tom Andersen
在这里,我们可以找到其他的连接字符串选项:https://www.connectionstrings.com/postgresql-odbc-driver-psqlodbc/ - A. Munir
ODBC连接类型在连接类型方面存在限制,目前不支持直接查询。如果您想使用实时连接,这可能不是最佳选择。 - Glitch
作为Power BI用户,我非常感谢这个答案。虽然我的问题出现在本地而不是云端的PostgreSQL数据库连接上,但使用所描述的步骤,替换Server=HEROKU_HOST中的IP并仅使用"PORT=...; DATABASE=...;",我终于成功连接了。Power BI Desktop中集成的(非ODBC)连接器无法连接。 - Kondado

11

我没有使用Heroku,但在AWS中遇到了类似的问题,必须按照下面描述的步骤配置db提供程序和证书。我认为Heroku需要类似的操作。

我进行了一些调查,找到了Heroku的两个可能解决方案:

  • 在数据库连接中提供附加设置sslmode=Require;Trust Server Certificate=true。这似乎不是PowerBI的选项,因为即使在“高级设置”下也没有地方提供这些内容。
  • 按照此处所述,下载数据库的证书,然后按照我以下所述的流程注册证书到Windows。如果Heroku提供P7B(PKCS#7或pfx(PKCS#12)格式的证书,则可以在无需进行转换的情况下将其注册到Windows。

我的 Npgsql 提供程序和 AWS 证书配置

PowerBI 和 Excel 支持使用 Npgsql .NET 数据提供程序连接到 Postgres。该提供程序在 Windows 上默认未安装。以下是安装方法:

  1. Npgsql版本发布页面下载适当的 .msi 安装程序。所需版本取决于您的 Excel 版本。我正在运行 Office 365,需要版本 4.0.x(我安装了 4.0.10 版本,下载在这里)。
  2. 运行安装程序。在安装期间,有一个选项来将文件安装到 GAC 中 默认关闭 - 您必须选择将文件安装到 GAC 中。
  3. 重新启动计算机,然后您应该能够在 PowerBI 或 Excel 中设置 Postgres 连接。

AWS RDS Postgres - 额外要求

如果您连接到在 AWS 运行的 Postgres 群集,在安装 Npgsql 提供程序后尝试连接到 Postgres 时,可能会收到错误消息:

"远程证书根据验证过程无效"

以下是解决方法:

  1. 下载 AWS RDS 区域公钥:https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
  2. 将包转换为P7B/PKCS#7格式的Windows证书。有许多方法可以做到这一点,其中一种简单的方法是使用https://www.sslshopper.com/ssl-converter.html
  3. 在Windows中,搜索“管理用户证书”实用程序并打开它。
    1. 右键单击“受信任的根证书颁发机构”,选择“所有任务”,然后选择“导入...”
    2. 选择转换AWS密钥为P7B格式的输出文件.p7b。
    3. 选择将所有证书放置在“受信任的根证书颁发机构”存储中。
    4. 您可能需要确认每个证书 - 每个AWS区域都有一个证书

现在,您应该能够从PowerBI或Excel连接到AWS RDS Postgres数据库。


你提供的这个链接只适用于在Heroku上使用私有空间的情况。如果你只是拥有一个普通的Heroku账户,那么你无法通过按照这些说明来下载数据库证书。 - J86
@J86 - 我可以查看那个链接,而且我根本没有Heroku账户。 - Peter
对于未来的读者,仅按照“AWS RDS Postgres - 额外要求”下的步骤(下载和导入RDS证书)即可。我的设置:PostgreSQL在AWS RDS上,Power BI在Windows EC2(AWS)上,没有Heroku帐户。 - m01010011
这对我们起作用了,尽管在基础设施中使用此项技术有点失望,因为当前所需的Npgsql版本比写作时要落后3个完整版本... - Jake

0
您需要检查您的PostgreSQL数据库中基于主机的身份验证是否允许来自POWERBI的连接。
该文件通常位于postgres数据文件夹中,其结构如下所示。请确保客户端主机、用户名具有正确的权限以访问数据库。
[https://www.postgresql.org/docs/current/auth-pg-hba-conf.html][1]
local         database  user  auth-method [auth-options]

注意:如果您正在使用像patroni这样的集群管理器,则每次编辑pg_hba.conf文件时,它都将被Patroni覆盖。您需要从patronictl命令中编辑此配置。

0

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