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