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