无论我尝试什么设置,我都会不断收到来自外部客户端的连接错误,以及尝试从服务器本身上正在运行的控制台进行连接。
我最后一次尝试与“user_test”进行本地连接:
psql -h /var/run/postgresql -p5433 -U user_test
当我检查 /var/log/postgresql/postgresql-12-db_test.log 上的日志时,日志的最后一行让我感到困惑:为什么日志指的是 pg_hba.conf 中的“第 90 行”?那条线不应该存在???
2019-12-23 00:24:50.620 CET [11398] LOG: listening on IPv4 address "0.0.0.0", port 5433
2019-12-23 00:24:50.620 CET [11398] LOG: listening on IPv6 address "::", port 5433
2019-12-23 00:24:50.623 CET [11398] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5433"
2019-12-23 00:24:50.649 CET [11399] LOG: database system was shut down at 2019-12-23 00:24:50 CET
2019-12-23 00:24:50.654 CET [11398] LOG: database system is ready to accept connections
2019-12-23 00:25:22.452 CET [11426] user_test@user_test LOG: provided user name (user_test) and authenticated user name (postgres) do not match
2019-12-23 00:25:22.452 CET [11426] user_test@user_test FATAL: Peer authentication failed for user "user_test"
2019-12-23 00:25:22.452 CET [11426] user_test@user_test DETAIL: Connection matched pg_hba.conf line 90: "local all all peer"
这是我的设置的摘要:
- 在 ubuntu 云服务器上全新安装 postgesql 12
- 创建了一个集群“db_test”(与标准安装“main”一起)
- 添加角色“admin”并将用户“user_test”分配给集群
- 告诉 postgres 监听所有端口(ALTER SYSTEM SET listen_addresses='*';)
- 修改 pg_hba.conf (sudo nano /var/lib/postgresql/12/db_test/pg_hba.conf)
该文件当前读取(有许多其他设置都不起作用):
# TYPE DATABASE USER ADDRESS METHOD
local all user_test trust
hostssl all all 31.164.122.223 md5
- 使用以下任一方法重新启动该过程:
postgres@servername:~$ sudo service postgresql@12-db_test restart
或者
pg_ctlcluster 12 db_test start
用户 jjanes 的评论帮助我找到了真正的 hba 文件。它实际上在这里:
/etc/postgresql/12/db_test/pg_hba.conf
(而不是在 /var/lib/postgresql/12/... 不记得我为什么期望它在那里。因为我对这一切都不熟悉,linux 目录树的分支对我来说是神秘的。)