4

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

我的问题是,在尝试与数据库交互或访问它时,我总是被要求输入密码,尽管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)。

4

1 回答 1

1

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

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

除此之外, thepg_hba.conf和其他命令看起来都很好。您应该能够将无密码连接到psql -U thisuser.

于 2012-09-12T12:59:42.983 回答