使用PGAdmin可连远程PostgreSQL,但C# Npgsql连接失败求助
解决Npgsql连接PostgreSQL时的pg_hba.conf无条目错误(PGAdmin可正常连接)
核心原因
PGAdmin默认启用SSL加密连接,而你当前的Npgsql连接字符串未开启SSL,PostgreSQL服务器的pg_hba.conf中仅配置了允许加密连接的规则,因此拒绝了无加密的连接请求。
解决方案
方案1:在Npgsql连接字符串中启用SSL
修改连接字符串,添加SSL模式参数,示例:
"Host=XXX;Port=5432;Username=XX;Password=XX;Database=XX;Ssl Mode=Require"
常用SSL模式说明:
Require:强制使用SSL连接,无SSL则连接失败Prefer:优先尝试SSL连接,失败则降级为非SSL(需服务器允许)VerifyFull:加密连接的同时验证服务器证书有效性
方案2:调整服务器pg_hba.conf规则(无需SSL)
联系服务器管理员,在pg_hba.conf中添加允许非加密连接的规则,格式如下:
host 目标数据库名 目标用户名 你的客户端IP/32 scram-sha-256
替换占位符为实际信息后,重启PostgreSQL服务使配置生效。
验证
- 采用方案1时,修改连接字符串后重新执行
connection.Open()测试 - 采用方案2时,确认管理员完成配置更新和服务重启后再测试连接
内容的提问来源于stack exchange,提问作者abmptit
相关产品推荐
相关产品推荐

