Ruby 终端认证访问问题

Ruby 终端认证访问问题,ruby,postgresql,Ruby,Postgresql,我正在使用MacOSX10.15.4(最新版本)。Postgres已经安装(v12),到目前为止,它在我需要做的事情上运行良好 启动Postgres应用程序,下面列出了四个数据库:Andy(这是我在本地登录的OSX用户名)、Postgres、template1和test(这是我自己设置的数据库)。如果我点击test,我就可以随心所欲地使用psql,所以没有问题。通过阅读,我理解了为什么会列出Andy和postgres,并且template1对于事情的正常运行至关重要 当我从psql中\du登录到

我正在使用MacOSX10.15.4(最新版本)。Postgres已经安装(v12),到目前为止,它在我需要做的事情上运行良好

启动Postgres应用程序,下面列出了四个数据库:
Andy
(这是我在本地登录的OSX用户名)、
Postgres
template1
test
(这是我自己设置的数据库)。如果我点击test,我就可以随心所欲地使用psql,所以没有问题。通过阅读,我理解了为什么会列出
Andy
postgres
,并且template1对于事情的正常运行至关重要

当我从psql中
\du
登录到我的
test
数据库时,我得到以下信息:

Andy     | Superuser, Create role, Create DB                          | {}
postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
如果我得到“\conninfo”:

You are connected to database "test" as user "AndyP" via socket in "/tmp" at port "5433".
所以到目前为止,我一直在通过打开psql与postgres打交道,这已经足够了。然而,现在我正在寻找围绕postgres构建一个应用程序,就通过一个简单的终端窗口访问psql而言,我遇到了困难

我四处搜索,发现这里有很多类似问题的答案,但大多数都没有什么意义,包括发出令我对破坏某些东西感到紧张的命令,或者根本无法解决我的问题

这是

当我打开一个普通终端窗口并在终端中键入
psql
时,不管发生什么,我都会被要求输入密码。我的理解(同样,从我所读到的内容来看)是,作为Andy登录到OSX,我本以为我的登录密码可以工作,但事实并非如此。下一步,我尝试切换到登录或设置postgres的密码,但唉,它不允许我

我的pg_ident.conf和pg_hba.conf文件的内容如下:

pg_ident.conf

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
# 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     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
但这些标题后面没有条目

pg_hba.conf

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
# 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     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
从我读到的内容来看,
trust
意味着作为本地用户,我应该能够毫无问题地登录

很明显,我错过了一些东西,所以欢迎任何帮助

此外:

阅读此()后,我能够在打开的psql窗口中更改密码,但当我尝试从全新的终端窗口访问psql时,它询问我的密码,它仍然阻止了我

psql:错误:无法连接到服务器:致命:用户“Andy”的密码验证失败


即使我刚刚更改了它。

什么可以确保您有两个不同的PostgreSQL数据库实例:一个使用默认端口5432,另一个使用端口5433


不确定是否安装了2个不同的PostgreSQL版本,因为只有安装了1个PostgreSQL版本才能出现这种情况:2个实例可以在同一台计算机上使用相同的PG版本,它们只需要使用不同的端口号和不同的PGDATA目录。

请尝试
psql-p 5433
。您的conninfo输出列出了端口5433,但5432是默认端口;我猜您安装了多个版本的postgres,并且您发布的pg_hba.conf是针对在端口5433上运行的版本的。我不熟悉OSX,所以我无法确定5432配置文件的位置。天哪。。。成功了!!直接进入。。。但是两次安装postgres??是的,当我将代码切换到使用端口5433时,它按预期连接。当我试图更新Postgres的安装以使用5432时,它警告我有另一个版本的Postgres正在运行。我需要再调查一下,看看到底发生了什么。