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

使用Windows身份认证通过NpgsqlConnection连接PostgreSQL v16报错求助

解决PostgreSQL 16 Windows身份认证连接问题

问题诊断

你遇到的错误核心是PostgreSQL端配置的认证方式与客户端请求的Windows集成认证(SSPI)不匹配:

  • 你在pg_hba.conf中使用了ident方法,但该方法仅适用于Unix/Linux环境,Windows系统下的集成认证需要用sspi方法。
  • 你的PG角色与域用户名完全同名,这种情况下SSPI认证不需要额外配置pg_ident.conf的映射规则。

修复步骤

1. 修正pg_hba.conf配置

找到你添加的SSPI相关规则,将ident map=SSPI替换为sspi:

# IPv4 local connections for SSPI:
host    all             domainusername     127.0.0.1/32             sspi

# IPv6 local connections for SSPI:
host    all             domainusername    ::1/128                 sspi

注意:确保这些规则位于其他通用认证规则(比如scram-sha-256、md5)之前,PostgreSQL会按顺序匹配pg_hba.conf中的规则。

2. 简化pg_ident.conf配置

由于PG角色名和域用户名完全一致,无需额外映射,删除你添加的SSPI映射行,恢复默认配置即可。

3. 重启PostgreSQL服务

修改配置后必须重启服务才能生效,可通过Windows服务管理器或命令行执行:

net stop postgresql-x64-16
net start postgresql-x64-16

4. 验证连接字符串

你的Npgsql连接字符串配置正确,保持不变:

new NpgsqlConnection(@"Server=Servername;Port=5432;Database=DBname;Integrated Security=True;");

额外检查点

  • 确认PostgreSQL 16服务运行账号具备访问域用户信息的权限(默认服务账号通常满足要求)。
  • 确保PG角色拥有LOGIN权限,可通过SQL验证并修复:
ALTER ROLE domainusername WITH LOGIN;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:47:19