将 RDS 连接到 Quicksight 会抛出“GENERIC_SQL_EXCEPTION”

问题描述 投票:0回答:2

我在 eu-central-1 上有一个 RDS PSQL14 数据库,希望将其连接到 Quicksight 作为新数据源。

但是,我总是收到以下错误:

sourceErrorCode:    GENERIC_SQL_EXCEPTION
sourceErrorMessage: The authentication type 10 is not supported. Check that you have configured the pg_hba.conf file to include the client's IP address or subnet, and that it is using an authentication scheme supported by the driver.

我不知道如何编辑

pg_hba.conf
文件。虽然我知道 RDS 所在的 VPC 会允许连接。

这很可能是 sha256 与 md5 身份验证的问题,所以我读过几篇文章,但我不确定。请有人教育我:)

postgresql amazon-rds amazon-vpc amazon-quicksight
2个回答
4
投票

这是一个巨大的时间浪费。

tldr:psql 13 及更高版本使用 scram-sha-256,但旧版本仅支持 md5。

这背后的原因是 AWS Quicksight 使用 PostgreSQL JDBC 驱动程序

42.2.1
如果您尝试将其与任何较新的 psql 版本连接,它将失败,因为更新版本的 PostgreSQL 中使用的密码身份验证方法发生了更改 (
scram-sha-256
)。但是,
42.2.x
驱动程序仅支持通过
md5
密码连接。

如何解决?

1.降级:

如果您降级到版本 12.9 或更低版本,问题应该会自行解决。

2.将 Auth 更改为 md5:

!!它将影响所有用户和连接!!

  1. 创建一个新的参数组。
  2. 创建新参数组后 > 搜索password_cryption > 编辑参数
  3. 选择 md5(更改“rds.accepted_password_auth_method”参数以允许 md5 + scram,这将允许您使用 md5 创建用户以供 QuickSight 连接)。
  4. 保存更改
  5. 然后您可以修改数据库以使用步骤 1 中创建的数据库参数组。
  6. 创建一个新用户,用于具有必要权限的 RDS 实例的 QuickSight 身份验证。

3.具有会话级 md5 的新 Quicksight 用户:

  1. 验证当前的password_cryption值:
    • show password_encryption
  2. 将参数的会话变量设置为'md5:
    • set password_encryption = 'md5'
  3. 创建用户并为其分配必要的凭据
    • create user (username) with password '(password)';
    • grant connect on database (database) to (username);
  4. 使用用户从 QuickSight 连接,它应该能够使用“md5”加密而不是“scram-sha-256”成功连接。

0
投票

另一个选项是将密码设置为 md5 哈希值。 PostgreSQL 将按原样存储它。这允许您创建 AWS QuickSight 用户,而无需修改任何服务器设置。

要为 PostgreSQL 生成 md5 哈希,请将密码与用户名连接起来,获取哈希,然后在其前面加上

md5
。 这是一个单行:

echo -n 'mypasswordUSER' | md5sum | awk '{print "md5"$1}'

如果提供的密码字符串已经采用 MD5 加密或 SCRAM 加密格式,则无论密码加密如何,都会按原样存储

对于 MD5 加密密码,rolpassword 列将以字符串 md5 开头,后跟 32 个字符的十六进制 MD5 哈希值。 MD5 哈希值将由用户密码与其用户名连接而成。例如,如果用户 joe 的密码为 xyzzy,PostgreSQL 将存储 xyzzyjoe 的 md5 哈希值。

© www.soinside.com 2019 - 2024. All rights reserved.