解决方式
为安全起见,默认禁用了远程连接访问功能,只允许localhost连接。那么,如何启用该功能呢?
为了启用网络或者远程访问功能,我们需要在postgresql.conf文件中添加或者编辑下列内容:
listen_addresses = '*'
在adb_hba.conf添加如下内容,以便允许用户通过某种method来访问数据库:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 10.20.21.0/24 trust
postgresql.conf
配置项 说明
listen_addresses = ‘’ listen_addresses指定了要侦听的IP地址。默认只监听localhost的地址,也就是禁止远程服务器来访问。在大多数情况下,我们会接受所有主机的连接,所以可以使用“”,它表示所有IP地址。如果只接受指定ip的连接,则在adb_hba.conf进行配置。
adb_hba.conf
配置项 说明
TYPE
Type = host表示远程连接。Type = local表示本地Unix domain socket连接。
DATABASE
Database = all 表示所有数据库。其他名字要求严格匹配,还可以规定一个由逗号分隔的数据库列表。
USER
User = all 表示所有用户。其他名字要求严格匹配,还可以规定一个由逗号分隔的用户列表。
CIDR-ADDRESS
CIDR-ADDRESS 由两部分组成,即IP地址/子网掩码。子网掩码规定了IP地址中前面哪些位表示网络编号。这里/0表示IP地址中没有表示网络编号的位,这样的话全部的IP地址都匹配,例如192.168.0.0/24表示匹配前24位,所以它匹配任何192.168.0.x形式的IP地址。
METHOD
Method = trust表示可信认证,允许免密登录。其他的认证方法包括MD5,则要求客户端输入密码验证才能访问数据库
其他的一些可能的原因,如下:
服务端没起来,ps -ef|grep postgres查看是否存在postgres进程
监听问题,cat postgresql.conf|grep listen 查看监听地址是否正确
以上都没问题,服务器端能连进去,但客户端不行,这时需要查看adb_hba.conf
以上都没问题,检查服务器端的iptables,开启防火墙的访问端口
以上都没问题,检查SELINUX,确保SELINUX已关闭
原因说明
按上述说明依次排查