【问题标题】:Why is postgres running with hostname = /var/run/postgresql?为什么 postgres 以 hostname = /var/run/postgresql 运行?
【发布时间】:2021-05-07 07:15:02
【问题描述】:

我一直在尝试让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,所以也许它与全新安装有关?

【问题讨论】:

    标签: javascript node.js postgresql


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      PostgreSQL 可能未配置为允许该用户通过 TCP 连接,仅允许 UNIX 套接字。检查 Postgres 安装的 pg_hba.conf - 它应该包含一个允许 my_user 从主机 127.0.0.1/32 访问 my_db 的条目。可以使用更广泛的津贴来代替它。

      该文件通常包含许多默认注释掉的有用示例,但如果有疑问,请查阅手册: https://www.postgresql.org/docs/current/auth-pg-hba-conf.html

      Postgres 附带的默认值可能取决于您使用的 Linux 发行版/软件包存储库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-16
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多