本地宿主机远程连接虚拟机postgreSQL失败超时问题解决

本地宿主机远程连接虚拟机postgreSQL失败超时问题解决

问题描述

虚拟机版本:CentOS8
PostgreSQL版本: 10.6
虚拟机上安装好postgreSQL后, 按常规方法重新配置了pg_hba.conf postgresql.conf两个文件,然后回到宿主机,使用navicat客户端去连接虚拟机的postgreSQL,一直都是报连接超时,连接不上。

整个处理流程

  1. updatedb;
  2. locate postgresql.conf(以此找到postgresql.conf文件位置,pg_hba.conf和它在同一个目录下,我的虚拟机目录是/var/lib/pgsql/data/);
  3. 使用vim修改pg_hba.conf、postgresql.conf并保存,按其它博客修改即可;
  4. su - postgres(切换用户到postgres);
  5. 先pg_ctl reload,再pg_ctl -D /var/lib/pgsql/data/ restart;
  6. 第5步跑不通的话,直接pg_ctl -D /var/lib/pgsql/data/ start;
  7. netstat -ano|grep 5432 说明:tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN,如果出现这句基本可以确定前面的配置已经生效了;
  8. psql -h 192.168.1.151 -U postgres 说明: -h后边跟上你的虚拟机的IP地址,如果此时能正常让你输密码进行连接,进一步说明了postgreSQL的配置已经没有问题了;
  9. 回到宿主机使用navicat远程连接,此时会发现报连接超时,连接失败,但是宿主机ping虚拟机能通;
  10. 怀疑是虚拟机的防火墙把5432端口墙住了,开始在虚拟机上用命令验证;
  11. firewall-cmd --query-port=5432/tcp 返回no,说明就是虚拟机的5432端口没有对外开放的原因;
  12. firewall-cmd --add-port=5432/tcp --permanent #永久添加5432端口例外
  13. firewall-cmd --reload #重启防火墙,使修改生效
  14. firewall-cmd --query-port=5432/tcp 返回yes
  15. 回到宿主机,使用navicat连接虚拟机数据库,此时能连接成功,问题解决。

你可能感兴趣的:(Java)