尽管打开信任设置,Postgres 9.2数据库仍会要求输入密码

时间:2012-09-12 12:08:48

标签: postgresql authentication passwords webserver

我是使用postgres的新手,我正在尝试访问在我没有超级用户权限的网络服务器上运行的数据库。

我的问题是,在尝试与数据库交互或访问时,我总是被要求输入密码,尽管所有用户和数据库的身份验证都设置为trust

在我的主目录中从源安装postgres 9.2后,我使用initdb -U thisuser -D tmpdb -A trust成功地将数据库群集联系起来,其中thisuser是我在网络服务器上的用户名。在此期间,我通过ssh登录到服务器。

使用pg_ctl -D tmpdb start启动服务器也没问题。

但是,当我尝试使用psql -U postgres访问数据库时,它总是要求输入密码。

据我所知,这不应该发生,因为我允许来自所有用户和数据库的连接。配置文件位于数据库集群floder中:tmpdb/pg_hba.conftmpdb/postgresql.conf

服务器设置为listen_addresses = 'localhost',身份验证设置如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

我经常使用这些设置,但是在设置数据库后我无法确定如何实际访问数据库。我怎样才能获得成功?

提前感谢!

编辑已解决:

我不确定之前究竟发生了什么,但我必须按如下方式设置环境变量:

PGPORT = 5433
export PGPORT

其中5433是postgresql.conf文件中指定的端口。现在它工作正常......(谢谢@celenius)。

1 个答案:

答案 0 :(得分:1)

如果initdb已调用-U thisuser,则thisuser将被用作超级用户而不是postgres

实际上,在这种情况下,postgres甚至可能不存在作为数据库用户,这也是psql -U postgres不起作用的一个很好的理由。至于为什么它要求输入密码而不是泄露用户不存在,这是一种常见的响应,可以避免将现有帐户的信息泄露给未经授权的人。

除此之外,pg_hba.conf和其他命令看起来很好。您应该可以使用psql -U thisuser连接无密码。

相关问题