PostgreSQL登录失败:psql error FATAL Peer authentication failed for user pgpool

文章目录

    • 问题
    • 处理

问题

  • pgpool用户已创建,密码已设置,权限已设置,允许登录
  • 但是在PostgreSQL所在服务器上,连接失败,使用以下命令登录均报错,但是navcat工具可以连接
su - postgres
# 指定用户启动,失败
psql -U pgpool
# 以为是没有同名数据库 pgpool 导致的加了个 -d postgres,还是失败
psql -U pgpool -d postgres
# 再次尝试 指定下端口号,还是失败,之后去百度了
psql  -p 5432 -U pgpool -d postgres
  • 报错信息
psql: error: FATAL:  Peer authentication failed for user "pgpool"

处理

  • 很明显,报错信息是用户认证失败,用户不可信
  • 百度了一堆,都说pg_hba.conf问题,要求全改为trust,这个有安全风险,自己测试用可以这么改,但是不建议
  • 去查看下自己配置的pg_hba.conf,发现配置没问题,全网段支持md5命令登录
  • 我这里还是自己测试用的,生产使用可以指定ip段可连接
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0               md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
host    replication     all             0.0.0.0/0               md5

  • 而且navcat可以连接,说明不是网段限制的原因
  • 试着在登录命令里加了下 -h localhost,竟然可以了
  • 无语,可能是设置local不可信导致的
  • 为什么加了下 -h localhost就可以了呢,应该是加上就不是local,命中了后面的host all all 0.0.0.0/0 md5
  • 在pg所在服务器上,使用非postgres用户登录,指定主机地址,才能正常登录

你可能感兴趣的:(数据库及存储技术,异常报错,postgresql,数据库,database,psqlerrorfatal,Peer,authent)