我有一个运行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)
似乎都是正确的。
答案 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新手。希望这可能有所帮助。
感谢所有其他答案!