Windows 8环境下PostgreSQL 9.5配置修改后服务无法启动求助
问题诊断与修复方案
嘿,我看你遇到了PostgreSQL服务启动失败+用户认证的双重问题,核心原因是pg_hba.conf的配置犯了两个常见错误,咱们一步步来解决:
1. 先搞定导致服务崩溃的pg_hba.conf语法问题
你现在的配置把连接类型搞混了:
local这个类型只对应Unix系统的域套接字连接,Windows根本没有这个东西,Windows本地连接用的是命名管道或者TCP/IP- 针对IPv4/IPv6的本地TCP连接,必须用
host类型,而不是local
你写错的配置块:
# IPv4本地连接: local all all 127.0.0.1/32 trust # IPv6本地连接: local all all ::1/128 trust
改成下面这样就对了:
# IPv4本地TCP连接: host all all 127.0.0.1/32 trust # IPv6本地TCP连接: host all all ::1/128 trust
如果想支持Windows的命名管道本地连接(相当于Unix的local),可以额外加这条(可选,默认Windows会处理):
local all all trust
2. 解决openpg用户的认证问题
等你把pg_hba.conf改好、服务正常启动后,咱们再处理用户认证的事儿:
- 先以超级用户(比如
postgres)登录数据库,执行SELECT usename FROM pg_user;确认openpg用户真的存在 - 如果之后想改成密码认证(而不是现在的
trust免密),可以把trust换成md5,然后给用户设置密码:ALTER USER openpg WITH PASSWORD '你的密码';
3. 关于pgpass.conf的小提醒
你加的pgpass.conf内容格式是对的:localhost:5432:edb:openpg:openpgpwd,但要注意:
- 这个文件只是给客户端(比如pgAdmin)自动填密码用的,完全不会影响服务启动,所以不用纠结它
- 确保文件放对地方:Windows下要放在
%APPDATA%\postgresql\目录里,目录不存在就手动建一个
4. 最后重启服务验证
改完pg_hba.conf后,按下面步骤操作:
- 用管理员身份打开命令提示符
- 重启服务:先输入
net stop postgresql-9.5(注意你的服务名可能是postgresql-x64-9.5,自己看服务列表调整),然后输入net start postgresql-9.5 - 启动pgAdmin3,用openpg用户连edb数据库,应该就能正常认证了
内容的提问来源于stack exchange,提问作者Hassan ALi
相关产品推荐
相关产品推荐

