Postgres/Psycopg:密码身份验证失败(使用正确的用户/密码)

问题描述 投票:0回答:1

连接到远程 Postgres 13 数据库服务器时,我收到以下错误。用户名和密码正确。

psycopg.OperationalError:连接失败:致命:用户“someuser”的密码身份验证失败

我尝试过的事情:

  • 使用 Psycopg2 二进制文件
  • 使用 Psycopg3[二进制]
  • 最宽松的pg_hba.conf:托管所有所有0.0.0.0/0信任
  • 还尝试了hostssl和md5以及密码选项
  • 设置 ssl = 关闭
  • 从 pg_hba.conf 中删除所有“拒绝”行

事实:

  • 用户可以通过 pgAdmin 连接
  • 用户可以通过psql连接
  • 相同的 Python 代码适用于不同的 Postgres 服务器
  • postgres.conf指定listen_addresses='*'
  • postgres.conf 与连接没有问题的服务器上的 postgres.conf 相同。
import psycopg

HOST="<ip here>"
PORT=5432
DB="<dbname here>"
USER="<user here>"
PASS="<pass here>"
with psycopg.connect(host=HOST,port=PORT,dbname=DB,user=USER,password=PASS) as conn:
    with conn.cursor() as cur:
        ....

我怀疑我无法连接的服务器可能有更强的 SSL 设置,但我在这里抓住了救命稻草。我还怀疑两台机器都是使用相同的木偶脚本创建和控制的,因此应该非常相同。考虑到返回错误,显然登录没有被防火墙阻止。

我还尝试添加

sslmode='required'
并传递证书文件,但这给了我一个
certificate verify failed
错误。两个 postgresql.conf 都有
ssl=on
.

更新:我一直在监视日志,显示成功的连接,但 Psycopg 从来没有任何身份验证失败。即使在最高的 debug5 级别,尝试连接时也不会显示任何内容。此外,我还设置了

ssl = off
并从 pg_hba.conf 中删除了所有“拒绝”行。

有什么想法吗?我可以检查或尝试的事情?

postgresql psycopg2
1个回答
0
投票

我遇到了同样的问题,也得到了同样的错误。

这不起作用。 使用 psycopg.connect(host=HOST,port=PORT,dbname=DB,user=USER,password=PASS) 作为 conn: 将 conn.cursor() 作为 cur:

字符串中的逗号......不起作用。

但是删除逗号...我创建了一个小函数来做到这一点。

def 连接(用户、密码、主机、端口、数据库名): connection_string = f'user={用户} 密码={密码} 主机={主机} 端口={端口} dbname={dbname}' 返回连接字符串

使用 psycopg.connect(connection_string) 作为 conn: 将 conn.cursor() 作为 cur:

它起作用了...

HTH.

© www.soinside.com 2019 - 2024. All rights reserved.