标题可能会使这看起来像一个重复的一些现有的问题在这样,但它的方式,在某种程度上,在我看来。
但是对于我的生活,我不能让这些线程的答案起作用,我不想在这些线程上问问题,我想创建我自己的问题,我想讨论我的设置,然后我的问题,然后我尝试了什么
我的服务器设置是这样的,我有一个本地的(一台实际的物理机器)和一个VPS,它们都运行在Centos7.x、PostgreSQL10、PHP7.x和Python-2.x,都可以通过VPN进行平和ssh。
两者都可以通过PHP、Python、PSQL终端连接到各自的数据库。
在我的VPS服务器上,我可以使用Python(psycopg2)、php(Pgsql)和终端(Psql)连接到本地服务器的PostgreSQL数据库。
在本地服务器上,我可以使用Python(psycopg2)和终端(Psql)连接VPS PostgreSQL,但通过PHP(php-pgsql)除外。
每当我通过PHP连接到VPS的PostgreSQL时,我就会像其他人一样得到这个错误
pg_connect(): Unable to connect to PostgreSQL server:
could not connect to server: Permission denied
Is the server running on host "123.456.0.789" and accepting TCP/IP connections on port 5432?以下是我所做的。
G 215
这些是我的netstat的结果
#netstat -na | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
tcp6 0 94 ::1:55110 ::1:5432 ESTABLISHED
tcp6 0 0 ::1:5432 ::1:55060 ESTABLISHED
tcp6 0 0 ::1:5432 ::1:55110 ESTABLISHED
tcp6 12 0 ::1:5432 ::1:55108 ESTABLISHED
tcp6 0 12 ::1:55108 ::1:5432 ESTABLISHED
tcp6 0 0 ::1:55060 ::1:5432 ESTABLISHED
unix 2 [ ACC ] STREAM LISTENING 31102 /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 31104 /tmp/.s.PGSQL.5432iptables
#iptables-save | grep 5432
-A IN_public_allow -p tcp -m tcp --dport 5432 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT延伸力
#getenforce
Disabled塞利诺
#/usr/sbin/sestatus | grep SELinux
SELinux status: disabled
#sudo setsebool -P httpd_can_network_connect_db 1
setsebool: SELinux is disabled.postgresql.conf
listen_addresses = '*'
port = 5432 pg_hba.conf (我刚刚更改了在这里发布的ip )我尝试使用trust,但仍然是一样的
# "local" is for Unix domain socket connections only
local all all password
# IPv4 local connections:
host all all 127.0.0.1/32 password
host all all 123.456.0.1/32 password
host all all 123.456.0.11/32 password
host all all 123.456.0.20/32 password
# IPv6 local connections:
host all all ::1/128 password编辑开始:我的PHP代码(我只是为这篇文章更改了IP,但它指向了pg_connect IP)
$pgcon = pg_connect("dbname=database1 user=some_user password=some_password host=123.456.0.789");编辑端:==
我想强调的是,这两台服务器都可以通过其他方式连接彼此的PostgreSQL数据库和它们自己的PostgreSQL数据库,除了之外,它无法使用PHP连接到VPS PostgreSQL。
从VPS到Self(本地主机连接)
VPS to Self via PHP is OK
VPS to Self via Python is OK
VPS to Self via PSQL(Terminal) is OKVPS到本地服务器(使用本地服务器的VPN IP连接)
VPS to Local Server via PHP is OK
VPS to Local Server via Python is OK
VPS to Local Server via PSQL(Terminal) is OK本地服务器到自我(本地主机连接)
Local Server to Self via PHP is OK
Local Server to Self via Python is OK
Local Server to Self via PSQL(Terminal) is OK本地服务器到VPS(通过VPN和公共IP连接VPS的IP)
Local Server to VPS via Python is OK
Local Server to VPS via PSQL(Terminal) is OK
Local Server to VPS via PHP Is NOT OK我真的很抱歉我的长线,我想提供尽可能多的信息。
发布于 2020-05-19 06:55:03
让我们按类型拆分错误。我对你的案子做了几次测试,我发现:
如果我们处理连接参数(即错误的端口或IP地址),则会得到“无法连接到服务器:连接拒绝”或“操作超时是在主机上运行的服务器”"128.0.0.1“和”接受“的错误(如果我们处理凭据,则会导致错误”致命:只有在没有从..."
如果您在本地服务器上禁用SElinux,请再检查一遍,对于我来说,这仍然是解决问题的最接近的方法。
https://stackoverflow.com/questions/61877992
复制相似问题