什么是pg_hba.conf中“本地”和“本地主机”连接类型之间的区别?(What's th

2019-06-26 23:59发布

这是我的相关部分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用户的影响?

Answer 1:

ident认证,是指你的操作系统的用户数据库用户匹配。 这只是为TCP / IP连接的支持的文档状态相关条目 。 如果使用Unix套接字使用的, 对等身份验证方法将被替代。

此外,请注意,是默认用户是不是postgres ,而是一个与您目前登录。



Answer 2:

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

本地

这条记录匹配使用Unix域套接字连接尝试。 如果没有这种类型的记录,Unix域套接字连接被禁止。

主办

这条记录匹配使用TCP / IP的连接请求。 host记录匹配SSL或者非SSL连接尝试。

注意:除非服务器开始的listen_addresses配置参数合适的值,因为默认行为是只监听本地回环地址本地主机的TCP / IP连接的远程TCP / IP连接将是不可能的。

对于GUC * listen_addresses postgresql.conf中, localhost也可作为设置:
* GUC: 大统一配置

默认值是本地主机 ,它允许进行仅本地TCP / IP“回环”连接。

大胆重点煤矿。



文章来源: What's the difference between “local” and “localhost” connection types in pg_hba.conf?