You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL本地连接密码认证失败问题求助

解决PostgreSQL本地连接密码验证失败的问题

别急,我来帮你一步步排查这个FATAL: password authentification failed的问题,结合你提供的信息,我们可以从这几个方向入手:

1. 先确保PostgreSQL服务加载了新的配置

你已经把pg_hba.conf里的验证方式改成了md5,但修改配置后必须重启PostgreSQL服务才能生效,这是很多新手容易忽略的关键点。在Ubuntu 16.04上,执行以下命令重启服务:

sudo service postgresql restart

或者用systemctl命令:

sudo systemctl restart postgresql

2. 验证用户antoine的密码是否正确设置

虽然你执行了设置密码的命令,但有可能操作过程中出现了疏漏。我们可以用超级用户postgres登录psql,检查用户的密码状态:
首先进入postgres的psql终端:

sudo -u postgres psql

然后执行查询语句:

SELECT usename, passwd FROM pg_shadow WHERE usename = 'antoine';

如果passwd字段显示的是一串md5开头的加密字符串,说明密码设置成功;如果是空值,那你需要重新执行密码设置命令:

ALTER USER antoine WITH ENCRYPTED PASSWORD '123';

执行完后输入\q退出psql即可。

3. 检查pg_hba.conf的规则顺序是否合理

pg_hba.conf的规则是从上到下匹配的,前面的规则会优先生效。看你提供的配置内容,注释掉了默认的peer规则,然后依次设置了:

  • Unix socket连接(local)用md5
  • IPv4本地连接(127.0.0.1/32)用md5
  • IPv6本地连接(::1/128)用md5
    这个顺序是没问题的,不会有优先级更高的规则覆盖你的设置。

4. 测试不同连接方式定位问题

你可以先尝试不用-h localhost的方式连接(也就是用Unix socket连接),看看是否能成功:

psql -U antoine -d cpf_ietest

如果这个命令能正常登录,说明TCP/IP连接的配置可能还有细节问题;如果同样失败,那大概率是密码设置或者服务没重启的问题。

5. 确认用户和数据库确实存在

最后再确认一下你创建的用户和数据库是否真的存在,避免拼写错误:
用postgres用户执行:

sudo -u postgres psql -c "SELECT 1 FROM pg_user WHERE usename='antoine';"

如果返回1,说明用户存在;再检查数据库:

sudo -u postgres psql -c "SELECT 1 FROM pg_database WHERE datname='cpf_ietest';"

同样返回1说明数据库存在。

按照上面的步骤排查后,应该就能解决密码验证失败的问题了。

内容的提问来源于stack exchange,提问作者Roux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:57:32