即使我在pg_hba.conf中从trust切换到md5,Postgresql用户也可以在同一台机器上无密码或密码错误登录

问题描述 投票:0回答:1

嗨我是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 service.But仍然postgresql用户可以登录没有密码或密码错误。密码验证似乎不起作用。

当我尝试从另一台机器登录时。密码验证有效。因为

host    all             all             0.0.0.0/0               md5

在pg_hba.config中工作。

为什么它不能在localhost中为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版本。

postgresql
1个回答
0
投票

最终我解决了这个问题。正如我所说的,我使用的是Windows 10.当我深入搜索这个问题时,我发现了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。如果我们想要更高的安全性,我们必须实现此文件并清空它。

© www.soinside.com 2019 - 2024. All rights reserved.