centOS 7无法远程连接5432端口
Unable to remotely connect to port 5432 on centOS 7
我正在尝试远程连接到 Postgresql (v9.6),但似乎无法连接。我的 Postgres 驻留在 CentOS 7 服务器上。我从该服务器为各种网站(端口 80xx)提供服务,并且我还在端口 5050 成功使用了一项服务。好像只有5432端口有问题。例如:
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
$ sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
Warning: ALREADY_ENABLED: 5432:tcp
success
$ sudo firewall-cmd --reload
success
$ sudo iptables -S | grep "5432"
-A IN_public_allow -p tcp -m tcp --dport 5432 -m conntrack --ctstate NEW -j ACCEPT
$ netstat -nlp | grep 5432
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:5432 :::* LISTEN -
unix 2 [ ACC ] STREAM LISTENING 516044892 - /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 516044894 - /tmp/.s.PGSQL.5432
我就是这样做的:
> psql -h xx.xx.xx.xx -p 5432 -U postgres
psql: could not connect to server: Connection refused
Is the server running on host "xx.xx.xx.xx" and accepting
TCP/IP connections on port 5432?
这是我的pg_hba.conf
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
host all all 172.17.0.0/24 trust
host all all 0.0.0.0/0 md5
并且我还修改了postgresql.conf
以在端口5432
上监听'*'
并重新启动服务器。
我错过了什么?
PS: 我可以在本地连接,因为我的一些网络应用程序正在使用这个服务器来存储数据。
编辑:这样可以吗?
$ netstat -tulpn | awk 'NR==2 || /:5432/'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:5432 :::* LISTEN -
看来我终于找到解决办法了
在 CentOS 7 中,两个 postgresql 配置文件可以在两个地方找到。
我用的是错误的:
vim /var/lib/pgsql/data/pg_hba.conf
vim /var/lib/pgsql/data/postgresql.conf
正确的可以在这个目录中找到
vim /var/lib/pgsql/9.6/data/postgresql.conf
vim /var/lib/pgsql/9.6/data/pg_hba.conf
我不知道为什么会这样,但现在可以了。我正在写答案以防有人需要它。
我正在尝试远程连接到 Postgresql (v9.6),但似乎无法连接。我的 Postgres 驻留在 CentOS 7 服务器上。我从该服务器为各种网站(端口 80xx)提供服务,并且我还在端口 5050 成功使用了一项服务。好像只有5432端口有问题。例如:
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
$ sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
Warning: ALREADY_ENABLED: 5432:tcp
success
$ sudo firewall-cmd --reload
success
$ sudo iptables -S | grep "5432"
-A IN_public_allow -p tcp -m tcp --dport 5432 -m conntrack --ctstate NEW -j ACCEPT
$ netstat -nlp | grep 5432
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:5432 :::* LISTEN -
unix 2 [ ACC ] STREAM LISTENING 516044892 - /var/run/postgresql/.s.PGSQL.5432
unix 2 [ ACC ] STREAM LISTENING 516044894 - /tmp/.s.PGSQL.5432
我就是这样做的:
> psql -h xx.xx.xx.xx -p 5432 -U postgres
psql: could not connect to server: Connection refused
Is the server running on host "xx.xx.xx.xx" and accepting
TCP/IP connections on port 5432?
这是我的pg_hba.conf
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
host all all 172.17.0.0/24 trust
host all all 0.0.0.0/0 md5
并且我还修改了postgresql.conf
以在端口5432
上监听'*'
并重新启动服务器。
我错过了什么?
PS: 我可以在本地连接,因为我的一些网络应用程序正在使用这个服务器来存储数据。
编辑:这样可以吗?
$ netstat -tulpn | awk 'NR==2 || /:5432/'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:5432 :::* LISTEN -
看来我终于找到解决办法了
在 CentOS 7 中,两个 postgresql 配置文件可以在两个地方找到。
我用的是错误的:
vim /var/lib/pgsql/data/pg_hba.conf
vim /var/lib/pgsql/data/postgresql.conf
正确的可以在这个目录中找到
vim /var/lib/pgsql/9.6/data/postgresql.conf
vim /var/lib/pgsql/9.6/data/pg_hba.conf
我不知道为什么会这样,但现在可以了。我正在写答案以防有人需要它。