我有一个运行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的新手。希望这可以有所帮助。
感谢所有其他答案!