psql与AWS PostgreSQL 10.4的连接导致pw身份验证失败?

时间:2018-11-22 10:46:13

标签: postgresql rds

问题

我建立了一个AWS RDS PostgreSQL 10.4数据库。数据集位于专用网络中,因此,我使用堡垒将连接转发到该数据集。然后,我可以使用Postico进行连接,但不能使用psql。

详细信息

我使用brew install postgres在本地安装了PostgreSQL。命令输出为(并且在AWS实例上,请参见更新):

❯ psql --version
psql (PostgreSQL) 10.5

然后我使用以下SSH命令建立隧道:

ssh -q -o "ConnectTimeout 3" -o "StrictHostKeyChecking no" -o "UserKnownHostsFile /dev/null" -i bastion-key.pem -L 5432:xxxxxx.xxxxx.eu-central-1.rds.amazonaws.com:5432 ec2-user@xx.xx.xx.xx -N

然后我使用Postico连接..一切正常!

最后但并非最不重要的一点是,我尝试使用以下命令进行连接:

❯ psql \
   --host=127.0.0.1 \
   --port=5432 \
   --username=USERNAME \
   --password \
   --dbname=DBNAME
Password for user USERNAME:
psql: FATAL:  password authentication failed for user "USERNAME"
FATAL:  password authentication failed for user "USERNAME"

我使用的是macOS High Sierra版本10.13.6 Macbook 13”。

更新2018-12-05:

还从运行Amazon Linux release 2 (Karoo)的Amazon映像(与psql 9取得与版本10相同的结果)中进行了尝试。版本10的安装遵循this的建议。

1 个答案:

答案 0 :(得分:0)

已解决,仍然是一个很糟糕的问题!

我使用secrets.token_urlsafe(90) Python3方法生成了PostgreSQL密码,这导致了psql无法处理的字符串,包括[_-]。

通过正确选择使用secrets.choice(string.ascii_uppercase) 1解决了这个问题!

长话短说:仅使用字符和数字作为密码,您将没有任何问题!