因连接认证配置错误导致连接失败的问题

问题现象

连接数据库报错。

1. Exception in thread "main" org.postgresql.util.PSQLException: [A.B.C.D:40822/A.B.C.D:20088] FATAL: Forbid remote connection with trust method!
2. at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:636)
3. at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:172)
4. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:254)
5. at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:53)
6. at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:270)
7. at org.postgresql.Driver.makeConnection(Driver.java:568)
8. at org.postgresql.Driver.connect(Driver.java:317)
9. at java.sql.DriverManager.getConnection(DriverManager.java:664)
10. at java.sql.DriverManager.getConnection(DriverManager.java:247)
11. at Main.run(Main.java:88)
12. at Main.main(Main.java:25)

定位方法

报错信息内容为向监控地址A.B.C.D发起连接由于认证为trust模式被禁止。

数据库连接认证配置文件为 pg_hba.conf,查看远程登陆认证配置:

1. # TYPE  DATABASE        USER            ADDRESS                 METHOD

3. # "local" is for Unix domain socket connections only
4. local   all             all                                     trust
5. # IPv4 local connections:
6. host    all             all             127.0.0.1/32            trust
7. host    all             all             A.B.C.D/32              trust
8. # IPv6 local connections:
9. host    all             all             ::1/128                 trust

确认确实使用了trust的远程登陆认证模式。

问题根因

数据库不支持以trust模式远程登陆。

解决方案

数据库不支持以trust模式远程登陆,需要修改为sha256、md5等。

1. # TYPE  DATABASE        USER            ADDRESS                 METHOD

3. # "local" is for Unix domain socket connections only
4. local   all             all                                     trust
5. # IPv4 local connections:
6. host    all             all             127.0.0.1/32            trust
7. host    all             all             A.B.C.D/32              sha256
8. # IPv6 local connections:
9. host    all             all             ::1/128                 trust