连接到远程 Postgres 13 数据库服务器时,我收到以下错误。用户名和密码正确。
psycopg.OperationalError:连接失败:致命:用户“someuser”的密码身份验证失败
我尝试过的事情:
事实:
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 中删除了所有“拒绝”行。
有什么想法吗?我可以检查或尝试的事情?
我遇到了同样的问题,也得到了同样的错误。
这不起作用。 使用 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.