嗨,我是postgresql的新手,但是我有sql server的背景。我试图了解postgres的安全性概念。我使用Windows 10,并且希望限制不使用密码的postgres用户的登录权限。我知道可以在pg_hba.config中实现。我从
host all all 127.0.0.1/32 trust
到
host all all 127.0.0.1/32 md5
并重新启动了postgresql服务。但是仍然使postgresql用户可以不使用密码或使用错误的密码登录。密码验证似乎无效。
当我尝试从另一台机器登录时,密码验证有效。 因为
host all all 0.0.0.0/0 md5
在pg_hba.config中有效。
为什么对于postgres用户,它在本地主机中不起作用?我该如何实现?
pg_hba.config的内容
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local & remote connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5
顺便说一下,我使用的是Postgresql 11版本。
答案 0 :(得分:0)
最终我解决了这个问题。正如我所说,我使用Windows10。当我深入搜索此问题时,我发现了Postgresql user can login without password or with wrong password in same machine even if I switch from trust to md5 in pg_hba.conf帖子。该帖子包含的评论是 “好像我在这里设置了一个密码,这导致了问题,C:\ Users ***** \ AppData \ Roaming / postgresql / pgpass.conf现在全部排序了,谢谢!”。 当我在该目录中查找pgpass.conf并清空此文件时,它可以按我的要求工作。 结果,如果我们进行md5身份验证并想在命令promt中强制输入密码,则必须清空此文件。如PostgreSQL文档在https://www.postgresql.org/docs/9.1/libpq-pgpass.html中所述 如果连接需要像md5身份验证中那样的密码,则将隐式使用此pgpass.conf。因此,如果要提高安全性,必须实现此文件并将其清空。