使用psycopg2连接PostgreSQL提示用户doug密码认证失败如何解决?
排查步骤
- 检查pg_hba.conf认证规则
绝大多数密码正确但认证失败的问题都是PostgreSQL访问控制配置导致的。找到对应版本的pg_hba.conf文件(通常路径为/etc/postgresql/<你的PG版本号>/main/pg_hba.conf或/var/lib/postgresql/<你的PG版本号>/data/pg_hba.conf),查看本地连接相关配置行:
如果存在以下类似配置:
将host all all localhost ident local all all peerident/peer修改为md5或scram-sha-256(根据你的PG密码加密方式选择),保存后重启PostgreSQL服务:sudo systemctl restart postgresql - 先用命令行工具验证连接有效性
先排除Python代码层面的问题,直接用psql测试连接:
手动输入密码psql -h localhost -U doug -d test0 -p 5432testpassword123,如果同样报错,说明问题完全在PostgreSQL侧,和psycopg2无关。 - 修改连接地址测试
你当前用的localhost在部分系统默认走Unix套接字连接,可以尝试把连接参数里的host=localhost改成host=127.0.0.1走TCP协议连接,看是否能成功。 - 重置用户密码确认有效性
避免创建用户时密码输入有误、存在不可见字符或转义问题,直接在PostgreSQL超级用户终端执行密码重置:ALTER USER doug WITH PASSWORD 'testpassword123'; - 确认PostgreSQL实例正确性
执行命令检查5432端口对应的PostgreSQL实例是否是你操作的目标实例,避免存在多版本PG同时运行连错实例的情况:netstat -tulpn | grep 5432
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

