【问题标题】:Can connect to postgres through localhost without password but not through 127.0.0.1. Why?可以通过 localhost 无需密码但不能通过 127.0.0.1 连接到 postgres。为什么?
【发布时间】:2014-11-18 23:13:24
【问题描述】:

我有安装了 PostgreSQL 9.4 数据库的 Kubuntu 14.10 桌面。 我已经通过执行SQL修改了数据库中postgres用户的密码:

ALTER USER postgres PASSWORD 'password';

我可以通过psql -h localhost -U postgres -W 连接到数据库服务器并提供密码但是我也可以通过简单的psql -h localhost -U postgres 连接而无需密码。

另一方面,如果我运行psql -h 127.0.0.1 -U postgres,它会提示我输入之前设置的密码。

localhost127.0.0.1 主机及其登录方式有什么区别?它在哪里设置?我在pg_hba.conf 文件中看不到与localhost 相关的条目。

【问题讨论】:

  • 你有 .pgpass 文件吗?
  • 是的。当我用谷歌搜索它时,我没有找到关于这个文件的任何信息。它实际上回答了我的问题。正如我所看到的,当我在那里输入连接详细信息时,pgadmin3 创建了这个文件(我很好奇 pgadmin 将密码存储在哪里……虽然没有寻找它)。如果您将此作为正确答案发布,我会认为它是正确的。
  • 另一个区别是localhost 在某些系统上解析为::1,或者解析为另一个 IPv6 等效地址,或者解析为多个地址。其中任何一个都意味着127.0.0.1 将与pg_hba.conf 不匹配。

标签: postgresql ubuntu


【解决方案1】:

您看到的行为可能是由密码文件引起的。密码文件在 Unix 系统上通常命名为 ~/.pgpass,但可以通过 PGPASSFILE 环境变量给出不同的文件名。

我认为包含“localhost”行但包含“127.0.0.1”行的密码文件将显示您所看到的行为。我自己的 ~/.pgpass 文件包含这一行。

本地主机:*:*:postgres:密码

当我像你一样尝试连接时会发生以下情况。

$ psql -h localhost -U postgres psql (9.3.5) SSL 连接(密码:DHE-RSA-AES256-SHA,位:256) 键入“帮助”以获得帮助。 沙箱=# \q $ psql -h 127.0.0.1 -U postgres 用户 postgres 的密码:

127.0.0.1:*:*:postgres:password 行添加到 ~/.pgpass 让我可以使用 127.0.0.1 登录,无需密码。

$ psql -h 127.0.0.1 -U postgres psql (9.3.5) SSL 连接(密码:DHE-RSA-AES256-SHA,位:256) 键入“帮助”以获得帮助。 沙箱=#

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2018-09-25
    • 1970-01-01
    • 2020-12-25
    • 2019-10-25
    • 2021-09-20
    • 2015-10-03
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多