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

时间:2014-01-09 11:07:23

标签: postgresql postgresql-9.2

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

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

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

BTW,它是亚马逊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)

似乎都是正确的。

3 个答案:

答案 0 :(得分:0)

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

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

如果它来自命令行,那么不要担心,因为如果你以postgres用户身份登录shell,它只会给你访问权限,并且以postgres用户身份登录你必须先是root用户。 / p>

答案 1 :(得分:0)

这些是我的设定。你错过了其他人可能

# 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

答案 2 :(得分:0)

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

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

感谢所有其他答案!