为啥在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败?

Posted

技术标签:

【中文标题】为啥在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败?【英文标题】:Why is password authentication failing when md5 hashing passwords in AWS Redshift?为什么在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败? 【发布时间】:2017-11-16 19:48:06 【问题描述】:

我正在尝试在我的 AWS Redshift 集群上创建一个新用户。在创建用户并对密码进行哈希处理时,我遵循了the documentation,但在尝试使用真实密码登录时,我不断遇到身份验证失败。

我所做的一些示例细节:

在 Mac 上从 bash shell 创建哈希:

echo -n "my_userMyPassword1" | md5
1ce2ff3ac550ebd14b9fbf01e91d84cd

然后以超级用户身份在 redshift 集群上:

CREATE USER my_user PASSWORD 'md51ce2ff3ac550ebd14b9fbf01e91d84cd' CONNECTION LIMIT 20;

当我尝试从命令行以用户身份登录时,我收到以下错误消息:

psql -h mycluster.myregion.redshift.amazonaws.com -p 1234 -U my_user myredshiftdb
Password for user my_user: 
psql: FATAL:  password authentication failed for user "my_user"
FATAL:  password authentication failed for user "my_user"

我使用 redshift md5 函数验证了哈希是正确的。我也在不散列密码时创建了帐户,并且可以成功登录。我尝试了密码的变体(使其超级简单和简短),但无济于事。

这是我正在使用的红移版本:

SELECT VERSION();
                                                         version                                                          
--------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.1499
(1 row)

【问题讨论】:

我认为它可能会将“md5”附加到您的密码中。看看它怎么说PASSWORD '** md5 **1ce2ff3ac550ebd14b9fbf01e91d84cd'?不确定这是否正确。还有,你为什么用md5? 按照 AWS 文档,我有意将 md5 添加到哈希中。您有使用 Redshift 替代 MD5 的示例吗? 我没有,只是看起来很奇怪,我认为可能是错字。 【参考方案1】:

您正在创建反向的用户/密码哈希。密码在前,用户在后。

echo -n "MyPassword1my_user" | md5

【讨论】:

呃。就是这样。 :facepalm: 谢谢!

以上是关于为啥在 AWS Redshift 中对密码进行 md5 哈希处理时密码身份验证失败?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Datapipeline 中的 Python 脚本中提供 Redshift 数据库密码?

在 SQL (Redshift) 中对连续块进行分组以进行聚合

使用 AWS Redshift 进行地理空间分析

如何在 SQL Redshift 中对表进行分区后比较两列的值

redshift 不适用于本地 aws 配置文件凭据吗?

为啥 redshift 在 stl_load_commits 中没有 csv 文件的条目?