PostgreSql:正确的密码或空白密码都可以访问数据库服务器



我有一个运行postgresql数据库服务器的VPS。现在我发现要么输入正确的密码,要么将密码留空,我可以从任何远程计算机访问数据库。错误的密码无法访问数据库。

空白密码访问显然是不可接受的。

从 pgAdmin 和本地 rails 应用程序尝试。

顺便说一句,这是一个亚马逊EC2。 如果这会有所帮助。

这是我的pg_hba.conf设置:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all     postgres        md5
# IPv4 local connections:
host    all     postgres        127.0.0.1/32    md5
#########################
host    all     postgres        0.0.0.0/0       md5
# IPv6 local connections: 
host    all     postgres             ::1/128                 md5

知道这里发生了什么吗?多谢!!

更新

$ /usr/local/pgsql/bin/psql 
Password: 
psql (9.2.4)
Type "help" for help.
postgres=# show config_file;
          config_file              
---------------------------------------
/usr/local/pgsql/data/postgresql.conf
(1 row)
postgres=# show hba_file;
         hba_file              
-----------------------------------
/usr/local/pgsql/data/pg_hba.conf
(1 row)

似乎都是正确的。

您确定您已经编辑了正确的配置文件(即 postgres 服务器使用的配置文件)吗?请注意,postgres 发行版附带了一些示例配置文件。另外 - 更改配置后是否重新启动了服务器?

另一个问题 - 如何访问数据库?它是来自应用程序还是从命令行(即 psql 命令)?

如果它来自命令行,那么不要担心,因为只有当您以 postgres 用户身份登录 shell 时,它才会为您提供访问权限,并且要以 postgres 用户身份登录,您必须先成为 root。

这些是我的设置。 你也许错过了其他人

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                md5
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

哦,**!最后,我找到了这个问题的遮阳篷。因此,我不需要密码来访问数据库服务器的原因是,.pgpass文件已将我的密码存储在我的本地计算机上。这样我就不必输入密码即可连接到远程服务器。

我从来不知道.pgpass文件会以这种方式工作。所以,如果有人像我一样是postgresql的新手。希望这可以有所帮助。

感谢所有其他答案!

相关内容

最新更新