问题
- 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 用户登录,指定主机地址,才能正常登录
|