psql:致命:角色“postgres”不存在(使用-h localhost选项)

时间:2013-02-13 02:13:22

标签: postgresql database-connection

我在本地机器上安装了Postgres。

执行时

psql -U postgres -d buzzsumo

它正确地向用户postgres询问我的密码。

然而,当我跑

psql -U postgres -d buzzsumo -h localhost

它给了我这个错误信息:

  

psql:致命:角色“postgres”不存在

为什么会出现这种情况,在第一个示例中,我连接到本地服务器,这相当于传入localhost?

2 个答案:

答案 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