1. 检查PostgreSQL服务运行状态
首先确认PostgreSQL服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status postgresql
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
2. 配置PostgreSQL监听地址(postgresql.conf)
编辑PostgreSQL主配置文件(路径通常为/etc/postgresql/<version>/main/postgresql.conf),找到listen_addresses参数,将其修改为允许所有IP连接(生产环境建议替换为具体IP):
listen_addresses = '*'
同时确认port参数为默认的5432(或自定义端口):
port = 5432
修改后保存文件
3. 配置远程访问权限(pg_hba.conf)
编辑PostgreSQL访问控制文件(路径通常为/etc/postgresql/<version>/main/pg_hba.conf),在文件末尾添加以下规则,允许指定IP段(如192.168.1.0/24)或所有IP(0.0.0.0/0,不推荐生产环境)通过MD5密码验证连接:
host all all 0.0.0.0/0 md5
保存文件后重启PostgreSQL服务使配置生效:
sudo systemctl restart postgresql
4. 检查防火墙设置
若系统启用了防火墙(如UFW或iptables),需开放PostgreSQL默认端口(5432):
sudo ufw allow 5432/tcpsudo ufw status(验证规则是否生效)sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPTsudo iptables-save > /etc/iptables/rules.v4(保存规则,确保重启后仍有效)5. 验证网络连通性
使用telnet或nc命令测试客户端与服务器之间的网络连接,确保端口可达:
telnet <server_ip> 5432
或
nc -vz <server_ip> 5432
若连接成功,会显示“Connected to <server_ip>”或“succeeded”的提示
6. 检查pgAdmin/pgAdmin配置
确保pgAdmin中输入的连接信息正确:
192.168.1.100);postgresql.conf中port参数一致(默认5432);postgresql.conf中ssl=on),需将sslmode设置为require或verify-full7. 查看PostgreSQL日志定位问题
若以上步骤均无法解决,查看PostgreSQL日志文件获取详细错误信息(日志路径通常为/var/log/postgresql/postgresql-<version>-main.log),根据日志中的错误提示(如“Connection refused”“Authentication failed”)进一步排查
8. 安全注意事项(可选但重要)
0.0.0.0/0允许所有IP连接,建议限制为特定IP段(如公司内网);postgresql.conf中设置ssl=on,并指定证书路径),保护数据传输安全