即使我从pg_hba.conf中的信任切换为md5,Postgresql用户也可以在没有密码或错误密码的情况下在同一台机器上登录

时间:2019-04-05 06:55:32

标签: postgresql

嗨,我是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版本。

1 个答案:

答案 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。因此,如果要提高安全性,必须实现此文件并将其清空。