我是 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 身份验证。就这样吧 没有“fall-through”机制——只尝试与请求匹配的第一个身份验证方法。因此,剩下要做的就是从 pg_hba.conf
中删除前两行,并创建一个与我的 Windows 登录名同名的角色。让我烦恼的是,明显的配置错误被默默地忽略了,甚至没有日志中的警告 - 这背后有什么原因吗?
关于sql - PostgreSQL SSPI 身份验证 - fatal error : 2801: password authentication failed for user "xxx",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21388701/