问题:PostgreSQL SSPI 身份验证 - 致命:2801:用户“xxx”的密码身份验证失败

我对 PostgreSQL 很陌生,对 MS SQL Server 有相当多的经验。引起我注意的 PostgreSQL 的一个特性是 SSPI 身份验证,我希望它可以使从 MS SQL 的过渡更容易。但是,我似乎无法让它工作。

目前,服务器和客户端都在同一台 Windows 7 机器上运行,该机器不是域的成员。如果我理解正确,SSPI 身份验证从 Kerberos 回退到 NTLM,所以它应该在没有域的情况下工作 - 我是对的吗?

当我尝试连接(通过 Npgsql 从 .NET 应用程序)时,我得到一个带有消息的NpgsqlException:Fatal: 28P01: password authentication failed for user "xxx"该消息对我来说有点令人费解,因为我没有使用密码身份验证。

我的pg_hba.conf:

host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    all             all             127.0.0.1/32            sspi

Npgsql 连接字符串:

Server=127.0.0.1;Port=5432;Database=mydb;Integrated Security=true;

我在这里做错了什么?还是没有域就无法工作?

解答

好的,我知道了。我不能同时允许 MD5 和 SSPI 身份验证。所以就这样吧没有“失败”机制 - 只尝试匹配请求的第一个身份验证方法。所以剩下要做的就是从pg_hba.conf中删除前两行并创建一个与我的 Windows 登录名相同的角色。让我烦恼的是,显然是配置错误被默默地忽略了,甚至在日志中也没有警告——这背后有什么原因吗?

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐