3

这是我的相关部分pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     ident
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

pidentd 服务正在运行。

当我尝试登录 ee1 时(我假设默认用户是 postgres):

psql ee1 

它说“用户 postgres 的对等身份验证失败”

  1. 我在哪里peer为“postgres”配置了身份验证?是ident

  2. 当我更改以下行时pg_hba.conf

    local   all             all                                 ident
    

    local   all             all                                 md5
    

    它要求我输入密码,我可以登录。为什么更改本地连接类型会对 postgres 用户产生影响?

4

2 回答 2

3

ident身份验证意味着您的操作系统用户与数据库用户匹配。它仅支持 TCP/IP 连接作为文档状态中的相关条目。如果与 Unix 套接字一起使用,将使用对等身份验证方法。

另外,请注意,默认用户不是postgres,而是您当前登录的用户。

于 2012-08-11T11:00:13.207 回答
2

local是 pg_hba.conf 中使用的连接类型,whilelocalhost是本地环回的网络地址,并转换为 IPv4 地址127.0.0.1或 IPv6 ::1
我引用手册关于pg_hba.conf

当地的

此记录匹配使用 Unix 域套接字的连接尝试。如果没有这种类型的记录,则不允许 Unix 域套接字连接。

主持人

此记录匹配使用 TCP/IP 进行的连接尝试。主机记录匹配 SSL 或非 SSL 连接尝试。

注意:除非使用适当的 listen_addresses 配置参数值启动服务器,否则无法进行远程 TCP/IP 连接,因为默认行为是仅在本地环回地址 localhost 上侦听 TCP/IP 连接。

对于 postgresql.conf 中的GUC*listen_addresseslocalhost也可以作为设置:
* GUC: Grand Unified Configuration

默认值为localhost,它只允许进行本地 TCP/IP“环回”连接。

大胆强调我的。

于 2012-08-11T14:34:16.900 回答