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

psql connection to AWS PostgreSQL 10.4 results in pw auth failed?

问题

我设置了一个 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 图像中尝试过 运行 Amazon Linux release 2 (Karoo) psql 9 与版本 10 的结果相同。版本 10 是按照 推荐安装的。

解决了,还是很烂的问题!

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

使用 secrets.choice(string.ascii_uppercase) 1 和正确的选择解决了问题!

长话短说:密码只使用字符和数字,不会有任何问题!