首页 > 解决方案 > 为什么 postgres 以 hostname = /var/run/postgresql 运行?

问题描述

我一直在尝试pg使用连接到我的本地 postgres 实例

const pool = new Pool({
  user: "my_user",
  host: "localhost",
  database: "my_db",
  password: "password",
  port: 5432,
});

但它从来没有奏效,而且我反复得到一个错误说error: Ident authentication failed for user "my_user"。我摆弄了一段时间的 postgres 用户/角色以确保my_user拥有数据库和表,但后来我注意到psql -d my_db -U my_user -h localhost失败并出现与上述相同的错误。经过一番搜索,我发现使用

host: "/var/run/postgresql"

解决了这个问题,但我不确定我明白为什么。我应该可以使用localhost吗?这似乎是大多数人设置这些东西的默认设置。我在 Fedora 33 上,只安装了 postgres,所以也许它与全新安装有关?

标签: javascriptnode.jspostgresql

解决方案


您已将 pg_hba.conf 设置为对来自 localhost 的连接使用“ident”身份验证。我不认为这是一个非常常见的配置。我不认为这是默认设置,我不知道您为什么要对其进行编辑以使其做到这一点,但显然这就是发生的事情。(在我的手中,仅仅在fedora 33上安装数据库软件并不会自动创建数据库,你必须做一些事情才能做到这一点。如果你按照教程,请链接到它)

如果你想使用“ident”身份验证,那么在日志文件中查看它失败的原因,然后修复它(也许你需要安装 oidentd?)。如果您不想使用它,请编辑 pg_hba,以免使用“ident”。


推荐阅读