【问题标题】:What's the difference between "local" and "localhost" connection types in pg_hba.conf?pg_hba.conf 中的“local”和“localhost”连接类型有什么区别?
【发布时间】:2012-08-08 11:28:03
【问题描述】:

这是我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. 我在哪里为“postgres”配置了peer 身份验证?我是ident

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

    local   all             all                                 ident
    

    local   all             all                                 md5
    

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

【问题讨论】:

    标签: postgresql connection localhost


    【解决方案1】:

    ident 身份验证意味着您的操作系统用户与数据库用户匹配。它仅支持relevant entry in docs states 的 TCP/IP 连接。如果与 Unix 套接字一起使用,则将使用 Peer authentication 方法。

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

    【讨论】:

    • 我使用自己的用户名登录到我的系统,那么为什么会说“用户'postgres'的对等身份验证失败”
    【解决方案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 连接。

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

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

    我的大胆强调。

    【讨论】:

    • 我为“主机”连接类型(带有环回地址)指定了 md5.. 并尝试了“psql ee1”,它从未要求我输入密码,但是当我为“本地”指定 md5 时连接类型,它开始要求我输入密码。这是为什么 ?我如何知道我是使用 Unix 套接字访问 localhost 还是使用 TCP/IP 访问 localhost?
    • @Daud:如果本地连接(例如,在同一台机器上与psql),pg_hba.conf 中的host 的设置无效,local 连接类型的设置是相关的。当您没有在连接中提供网络地址(因此,在本地连接)时,您会自动使用 Unix 套接字。
    猜你喜欢
    • 2019-05-11
    • 2017-09-03
    • 2010-09-12
    • 2019-05-23
    • 2011-01-28
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多