我在 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 身份验证的问题,所以我读过几篇文章,但我不确定。请有人教育我:)
这是一个巨大的时间浪费。
这背后的原因是 AWS Quicksight 使用 PostgreSQL JDBC 驱动程序
42.2.1
如果您尝试将其与任何较新的 psql 版本连接,它将失败,因为更新版本的 PostgreSQL 中使用的密码身份验证方法发生了更改 (scram-sha-256
)。但是,42.2.x
驱动程序仅支持通过 md5
密码连接。
如果您降级到版本 12.9 或更低版本,问题应该会自行解决。
!!它将影响所有用户和连接!!
show password_encryption
;set password_encryption = 'md5'
;create user (username) with password '(password)';
grant connect on database (database) to (username);
另一个选项是将密码设置为 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 哈希值。