WSL2中PostgreSQL连接失败:postgres用户peer认证失败求助
确认pg_hba.conf修改生效
找到配置文件路径(通常为/etc/postgresql/<版本号>/main/pg_hba.conf),将local all postgres peer这一行的peer替换为md5或scram-sha-256,然后执行sudo systemctl restart postgresql重启服务。很多时候修改后未重启服务导致配置不生效。切换postgres系统用户登录
peer认证依赖Linux系统用户与PostgreSQL用户匹配,直接执行sudo su - postgres切换到postgres系统用户,再输入psql即可无密码登录,这是peer认证的标准使用方式。检查Unix Socket权限
PostgreSQL本地连接默认用Unix Socket,路径通常为/var/run/postgresql/.s.PGSQL.5432。执行ls -l /var/run/postgresql/查看权限,确保文件所属用户/组为postgres,权限至少为rw-rw----。若权限异常,可重启PostgreSQL服务自动修复,或手动执行sudo chown postgres:postgres /var/run/postgresql/.s.PGSQL.5432 && sudo chmod 660 /var/run/postgresql/.s.PGSQL.5432。重置postgres用户密码(若改为md5/scram认证)
切换到postgres系统用户后,执行psql进入数据库,执行ALTER USER postgres WITH PASSWORD '你的密码';设置密码,之后用psql -U postgres -W输入密码测试登录。验证服务运行用户
执行ps aux | grep postgres查看PostgreSQL进程的运行用户,确保所有postgres相关进程的用户均为postgres,若存在其他用户运行的情况,需调整服务配置或修复权限。
内容的提问来源于stack exchange,提问作者eltrojan

