EC2实例执行pg_dump报错:LDAP认证失败及pg_hba.conf无匹配条目
解决PostgreSQL pg_dump连接失败问题
针对报错的分步处理
1. 修正pg_hba.conf配置错误
你当前的pg_hba.conf中IPv6规则的CIDR地址写错了,0.0.0.0/0是IPv4格式,IPv6需改为::/0,否则IPv6类型的连接会匹配不到规则。修正后的IPv6规则如下:
host all all ::/0 trust
修改完成后重启PostgreSQL服务(以CentOS/RHEL系统为例):
systemctl restart postgresql-15
2. 规避LDAP认证冲突
报错中出现LDAP authentication failed,说明当前PostgreSQL用户的认证配置与pg_hba.conf的规则存在冲突。由于你是在EC2实例本地执行备份,直接使用本地Unix Socket连接即可跳过网络认证环节,匹配local all all trust规则:
调整后的pg_dump命令(去掉-h x.x.x.x参数):
pg_dump -U "xxxxx" -p 2006 -d "xxxxx" -Fc --schema="test" -v -f test
如果必须使用TCP连接,需检查用户认证方式是否与pg_hba.conf一致:
- 登录PostgreSQL执行以下SQL查看用户配置:
SELECT usename, passwd FROM pg_shadow WHERE usename='xxxxx';
若passwd字段非空且关联LDAP配置,需将pg_hba.conf对应规则的认证方式改为ldap,或修改用户为密码认证并设置对应密码。
3. 验证连接有效性
先测试本地连接是否正常:
psql -U "xxxxx" -p 2006 -d "xxxxx"
能正常登录后,再执行pg_dump即可完成备份。
额外检查项
- 确认postgresql.conf中
port = 2006,与备份命令指定的端口一致 - 查看PostgreSQL日志(路径:
/var/lib/pgsql/15/data/log/),确认配置修改已生效
内容的提问来源于stack exchange,提问作者user23251903
相关产品推荐
相关产品推荐

