错误信息:
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
问题分析:
- 该问题是由于ubuntu虚拟机未对外部开放5433端口(该端口对应你自己的端口号)导致的,这里要开启这个端口的外部访问权限
解决办法:
1. 开启ubuntu虚拟机的防火墙,如果已经是开启状态,此步可省略:
# 查看防火墙状态:
dodo@ubuntu:/etc/iproute2$ sudo ufw status
Status: inactive
# 开启防火墙:
dodo@ubuntu:/etc/iproute2$ sudo ufw enable
Firewall is active and enabled on system startup
dodo@ubuntu:/etc/iproute2$ sudo ufw status
Status: active
2. 添加端口访问权限:
# 允许外部访问5433端口(这个直接设置端口号的方法我试过没有效果,但是下面的添加ip访问权限的有效,可根据情况自行尝试)
dodo@ubuntu:/etc/iproute2$ sudo ufw allow 5433
Rule added
Rule added (v6)
# 允许指定IP访问所有的本机端口(这里的10.160.xx.xx我设置的为本地window环境下的ip路径)
dodo@ubuntu:/etc/iproute2$ sudo ufw allow from 10.160.xx.xx
Rule added
# 尝试是否连通上述指定的ip
dodo@ubuntu:/etc/iproute2$ telnet 10.160.xx.xx 5433
Trying 10.160.xx.xx...
Connected to 10.160.xx.xx.
Escape character is '^]'.
Connection closed by foreign host.
如图:
我用添加ip的方式可以连通指定的ip和端口
完成以上步骤就可以解决could not connect to server: Connection refused的问题
本人测试有效,供参考!!!
备注:以下为一些备用命令
# 关闭防火墙:
dodo@ubuntu:~$ sudo ufw disable
# 禁止外部访问5433端口
dodo@ubuntu:~$ sudo ufw delete allow 5433
# 禁止外部访问smtp服务
dodo@ubuntu:~$ sudo ufw deny smtp
# 删除上面建立的某条规则
dodo@ubuntu:~$ sudo ufw delete allow smtp
# 拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
dodo@ubuntu:~$ sudo ufw deny proto tcp from 10.160.0.0/8 to 192.168.0.1 port 22
# ip及端口检测
dodo@ubuntu:~$ nc -zv 192.168.x.xx 22