我在本地机器上安装了 Postgres。
当我执行
psql -U postgres -d buzzsumo
它正确地向用户 postgres 询问我的密码。
但是,当我跑步时
psql -U postgres -d buzzsumo -h localhost
它给了我这个错误信息:
psql:致命:角色“postgres”不存在
为什么会出现这种情况,在第一个示例中我连接到本地服务器时,相当于传入 localhost?
我在本地机器上安装了 Postgres。
当我执行
psql -U postgres -d buzzsumo
它正确地向用户 postgres 询问我的密码。
但是,当我跑步时
psql -U postgres -d buzzsumo -h localhost
它给了我这个错误信息:
psql:致命:角色“postgres”不存在
为什么会出现这种情况,在第一个示例中我连接到本地服务器时,相当于传入 localhost?
你没有说,但我猜你在 MacOS 或 Linux 上运行 postgres。
第一种形式(没有 -h)通过“unix 套接字”连接。第二种形式,使用“-h localhost”通过 TCP/IP 连接到 localhost(IP 地址 127.0.0.1)。
Postgres 以不同的方式处理这两种类型的连接——或者至少,它可以这样做。如果您检查“pgsql/data/pg_hba.conf”文件以查看为这两种类型的连接配置了哪些身份验证机制。
您的第一个示例通过 Unix 套接字连接,第二个示例通过 TCP/IP 本地循环 (localhost) 连接。
对于第一个示例,您需要 in 中的连接类型local
,pg_hba.conf
因为以开头的第二行host
是相关的。您可能已经为这些连接类定义了不同的身份验证方法。