这是我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的对等身份验证失败”
我在哪里为“postgres”配置了peer
身份验证?这是ident
。
当我更改pg_hba.conf
中的以下行时:
local all all ident
到
local all all md5
它要求我输入密码,我可以登录。为什么更改本地连接类型会对postgres用户产生影响?
答案 0 :(得分:3)
ident
身份验证表示您的操作系统用户与数据库用户匹配。它仅支持作为relevant entry in docs states的TCP / IP连接。如果与Unix套接字一起使用,将使用Peer authentication方法。
另请注意,默认用户不是postgres
,而是您当前登录的用户。
答案 1 :(得分:2)
local
是pg_hba.conf中使用的连接类型,而localhost
是本地环回的网络地址,并转换为IPv4地址127.0.0.1
或IPv6 ::1
。
我引用the manual about pg_hba.conf
:
本地强>
此记录匹配使用Unix域套接字的连接尝试。没有这种类型的记录,Unix域套接字连接是 禁止。
宿主
此记录匹配使用TCP / IP进行的连接尝试。主机记录匹配SSL或非SSL连接尝试。
注意:除非使用listen_addresses配置参数的适当值启动服务器,否则将无法进行远程TCP / IP连接,因为默认行为是仅在本地环回地址localhost上侦听TCP / IP连接。 / b>的
对于postgresql.conf中的GUC* listen_addresses
,localhost
也可用作设置:
* GUC:Grand Unified Configuration
默认值为 localhost ,它只允许进行本地TCP / IP“环回”连接。
大胆强调我的。