【问题标题】:psql connection to AWS PostgreSQL 10.4 results in pw auth failed?psql 连接到 AWS PostgreSQL 10.4 导致 pw 身份验证失败?
【发布时间】:2018-12-07 01:21:35
【问题描述】:

问题

我设置了一个 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 月 5 日更新:

还从运行 Amazon Linux release 2 (Karoo) 的 Amazon 映像中进行了尝试,结果与 psql 9 与版本 10 相同。版本 10 是按照 this 推荐安装的。

【问题讨论】:

  • 是否 brew 启动了一个已经在端口 5432 上运行的本地 postgres?为了安全起见,为您的隧道和 psql 命令使用其他本地端口,这样您就可以确定您没有连接到本地 postgresql 服务器。
  • ps aux 没有显示任何进程,因为我在确定它是 AWS 之前使用 Postico 对其进行了测试
  • 在这种情况下,从你得到的错误中我可以看到你有一个连接,并且 pg_hba 中没有任何东西阻止你,所以你的用户名或密码一定有错误。请注意,当您不引用它们时,postgresql 会将标识符设为小写,因此如果您使用 create user MyUser ...,用户名实际上将变为 myuser
  • 用户名是小写的,没有特殊字符我只是用 USERNAME 字符串替换它
  • 会不会是散列问题?

标签: postgresql rds


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2011-02-25
    • 2020-01-18
    • 2015-03-13
    • 2022-11-30
    • 2018-10-09
    相关资源
    最近更新 更多