Postgresql服务器没有要求远程连接的密码

时间:2014-01-09 06:10:19

标签: postgresql postgresql-9.1

我发现当通过pgadmin进行远程连接时,我的posgresql数据库服务器没有询问用户postgres的密码。 我的意思是当我通过pgAdmin从本地计算机连接到远程数据库服务器时。

我在psql中添加了密码ALTER USER postgres PASSWORD 'mypassword'

这是我的pg_hba.config文件:

/usr/local/pgsql/bin/psql -qAt -c "show hba_file" | xargs grep -v -E '^[[:space:]]*#'

local   all             all                                     trust
host    all             all             127.0.0.1/32            md5

host    all             all               0.0.0.0/0             md5
host    all             all             ::1/128                 md5

所以,我不太明白这里发生了什么。

任何人都可以帮忙吗?

非常感谢。

更新

如果我改变:

local   all             all                                     trust

local   all             all                                     md5

现在,将要求本地连接(通过SSH)输入密码(以前没有要求输入密码。)但是远程连接仍然会在没有密码的情况下连接。

实际上,我尝试通过另一台服务器的rails appliaction连接到这个数据库服务器,没有密码,并且rails服务器启动没有问题。


为了方便而将结果放在

此问题的真正原因是.pgpass文件。 Mac将密码本地存储在用户主文件夹下的.pgpass文件中。然后,每当用户尝试登录时没有密码,PostgreSQL将为用户发送密码。

官方文件here

2 个答案:

答案 0 :(得分:17)

感谢所有评论和回答ppl!

但是这个问题的真正原因是.pgpass文件。我的mac将密码本地存储在我的用户主文件夹下的.pgpass文件中。然后每当我尝试登录时没有密码,PostgreSQL会为我发送密码。 这就是我遇到的问题......

再次感谢所有回复和评论!

有关详细信息,请参阅here

答案 1 :(得分:1)

阅读Postgresql.org上的文档

http://www.postgresql.org/docs/9.2/static/auth-pg-hba-conf.html

我建议您使用允许远程连接的少数用户的名称更改用户字段:

host    all             john,charles    0.0.0.0/0             md5
host    all             john,charles    ::1/128               md5

此外,出于安全原因,我建议您考虑使用" hostssl"并且您还指定了可以远程访问的数据库的名称:

hostsll webapp123     john,charles    0.0.0.0/0             md5

如果远程访问仅来自特定计算机,请指定其静态IP地址(如果使用DHCP,请相应地使用掩码。)

hostsll webapp123     john,charles    1.2.3.4/32            md5

这样你只会破坏数据库webapp123,用户john和charles可以做什么,而且只能从计算机1.2.3.4。

如文档中所述,您可以拥有任意数量的条目,因此如果您想添加一个测试服务器(即您家中的服务器),那么您可以添加一行,如下所示:

hostsll webapp123     john,charles    1.2.3.4/32            md5
hostsll webapp123     henry           home-ip/32            md5

通过不指定用户,您可能允许任何用户,包括那些没有密码的用户,其中一个用户被选中并且有效...

当然,我强烈建议您不要为在数据库中拥有管理权限的用户命名,除非您还指定了他的静态IP地址。