【发布时间】:2019-11-10 01:46:20
【问题描述】:
我有一个 digitalocean droplet,我正在尝试在使用 postgres 数据库的 CentOS 7 上安装我的 Java Web 应用程序。我已经成功安装了 Java、tomcat 和 postgres 数据库。我可以使用 pgadmin 以及本地 eclipse 从本地机器连接到我的 droplet 的 postgres 数据库。但是当我在服务器上部署 Web 应用程序时,出现以下错误:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
我已将 listen_addresses = '*' 添加到 postgresql.conf 中
这是来自 pg_hba.conf 的代码
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
host all all 0.0.0.0/0 md5
有防火墙问题吗?我需要提供任何特殊许可吗?我用来连接的端口是 5432。我没有对端口进行任何更改。
我删除了droplet并在上面安装了ubuntu 18,我成功地能够正确连接到数据库。再次,我安装了 CentOS 7,它给出了同样的问题。
这是iptables -L的输出
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
状态
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
【问题讨论】:
-
我假设,您的 java 应用程序和 postgres 在同一主机上运行,它们不在容器中运行。你能添加
iptables -L的输出吗? -
是的,它们在同一主机上运行。我已经用结果更新了问题。
-
在我看来,这有点像 selinux 问题。能否请您运行命令
sestatus进行检查? -
在问题中更新
-
那么你应该尝试暂时禁用selinux,以检查它是否能解决问题。以 root
setenforce 0身份尝试此命令。这应该暂时禁用它。
标签: spring postgresql centos