我正在尝试设置PostgreSQL,并允许仅特定的Windows用户从数据库中访问数据。使用MS SQL设置Windows身份验证非常容易,但我无法弄清如何在PostgreSQL中设置它。
我已经阅读了http://www.postgresql.org/docs/current/static/auth-methods.html上的文档,并编辑了pg_hba文件。 但是这样做后,PostgreSQL服务无法启动。
我正在尝试设置PostgreSQL,并允许仅特定的Windows用户从数据库中访问数据。使用MS SQL设置Windows身份验证非常容易,但我无法弄清如何在PostgreSQL中设置它。
我已经阅读了http://www.postgresql.org/docs/current/static/auth-methods.html上的文档,并编辑了pg_hba文件。 但是这样做后,PostgreSQL服务无法启动。
如果Postgresql服务器与客户机都在Windows上运行,那么您可以使用以下方法进行测试以查看是否有效:
host all all 0.0.0.0/0 sspi
PostgreSQL开发人员Magnus Hagander 详细说明:
"所有从本地机器、您的域或受信任的域连接的用户将自动使用配置的SSPI身份验证进行认证(您可以通过组策略启用/禁用NTLMv2或LM等内容,这是一个Windows配置而不是PostgreSQL)。您仍然需要在PostgreSQL中创建登录角色,但只需如此即可。请注意,域没有得到验证,只有用户名。因此,如果管理员用户在主域和受信任的域中尝试连接到PostgreSQL,则会被视为同一用户。请注意,此方法与Unix客户端不兼容."
如果您混合使用Unix-Windows,则必须采用使用GSSAPI的Kerberos进行配置。部署Pg在Windows环境中的文章可能会引导您找到正确的路径。
如果其他人像我一样遇到这个问题,在9.5版本开始,您需要为ipv4和ipv6添加一个可选参数,以使其正常工作。
include_realm=0
因此整个内容将如下所示:
host all your_username 127.0.0.1/32 sspi include_realm=0