尽管 pg_hba.conf 表示信任,Postgres 仍要求输入密码

Aar*_*ron 7 passwords postgresql psql

我已经在 Mac 上安装了 PostgreSQL 9.3。我正在尝试执行此命令:


$ sudo -u postgres psql template1
Password:
Password: 
psql: FATAL:  password authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

如您所见,它要求输入密码,我给了它。但它失败了。我尝试了 postgres 用户的密码和计算机密码。总是说失败。

我读到您可以更改 pg_hba.conf 文件以不要求输入密码。如下:

> # 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
> # Allow replication connections from localhost, by a user with the
> # replication privilege. 
> local   replication     postgres                                trust 
> host    replication     postgres        127.0.0.1/32            trust          
> host    replication     postgres        ::1/128                 trust 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这不应该要求输入密码。但事实确实如此。

有趣的是:它在 pgAdmin3 中登录正常。但不在终端。

更新#1:

更改 pg_hba.conf 文件后尝试重新启动 PostgreSQL。这是我收到的消息。

$ pg_ctl -D postgres -l server.log restart
pg_ctl: PID file "postgres/postmaster.pid" does not exist
Is server running?
starting server anyway
pg_ctl: could not read file "postgres/postmaster.opts"
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 1

结果我的系统上安装了两个版本的 PostgreSQL。8.4 和 9.3。每当安装 8.4 时,所有默认值都设置为使用它而不是 9.3。因此,尽管 9.3 永远不会请求权限或密码,但 8.4 会。

终于能够杀掉正在运行的8.4版本了。并将流量重定向到 9.3。现在可以了!!!

我也将 8.4 的 pg_hba.conf 文件设置为信任......以防万一。