pg_dump密码验证失败问题求助:修改pg_hba文件后仍无法解决
解决pg_dump中用户"ojadi"密码认证失败的问题
咱们一步步梳理你可能漏掉的操作,来解决这个pg_dump的密码认证失败问题:
确认密码输入的准确性
有时候会不小心输错大小写、特殊字符,或者把PostgreSQL用户密码和Windows系统用户密码搞混(PostgreSQL的用户密码是独立于系统的)。你可以先通过psql -U ojadi -d 你的数据库名命令尝试连接,输入密码看能不能成功,先排除密码本身的问题。确保pg_hba.conf的修改生效
修改pg_hba.conf后必须重启PostgreSQL服务才能生效,Windows下可以在「服务」管理器里找到PostgreSQL服务,右键选择重启。另外还要注意:- 你修改的是不是正确的pg_hba.conf文件?不同版本的PostgreSQL安装路径不同,一般在
C:\Program Files\PostgreSQL\[版本号]\data\pg_hba.conf,要确认是data文件夹下的这个文件。 - pg_hba.conf是按顺序匹配规则的,如果你添加的规则在后面,前面的规则可能先匹配了。比如如果前面已有
host all all 127.0.0.1/32 scram-sha-256的条目,你需要修改这条,或者把你的自定义规则移到前面。 - 确认规则的认证方式:如果用密码验证,要设置为
scram-sha-256(新版本默认)或md5,不要用trust(除非你明确知道风险)。
- 你修改的是不是正确的pg_hba.conf文件?不同版本的PostgreSQL安装路径不同,一般在
显式指定数据库用户执行pg_dump
你当前执行的pg_dump没有指定用户,PostgreSQL默认会用当前Windows用户名(ojadi)作为数据库用户,但如果这个用户在PostgreSQL中不存在、密码不对,就会失败。你可以尝试显式指定用户:pg_dump -U 你的PostgreSQL用户名 -d 要备份的数据库名比如用默认的postgres用户试试,看看能不能正常连接。
检查PostgreSQL的监听地址与IPv6配置
错误提示连接到localhost(::1)(IPv6地址),可能你的PostgreSQL没监听IPv6,或者pg_hba.conf里没配置IPv6的规则:- 尝试强制用IPv4连接:
pg_dump -h 127.0.0.1 -U ojadi -d 你的数据库名 - 检查postgresql.conf里的
listen_addresses设置,确保它包含localhost或*,这样才能监听本地连接。 - 确认pg_hba.conf里有针对IPv6本地连接的规则,比如
host all all ::1/128 scram-sha-256。
- 尝试强制用IPv4连接:
确认用户"ojadi"在PostgreSQL中存在并有权限
用postgres用户登录psql,执行SELECT usename FROM pg_user;,看看列表里有没有ojadi。如果没有,需要创建用户并赋予权限:-- 创建用户并设置密码 CREATE USER ojadi WITH PASSWORD '你的密码'; -- 赋予数据库权限 GRANT ALL PRIVILEGES ON DATABASE 你的数据库名 TO ojadi;
内容的提问来源于stack exchange,提问作者coderoftheday




