PostgreSQL psql:无法连接到服务器:连接被拒绝

时间:2020-01-09 10:43:04  来源:igfitidea点击:

问题描述:当我尝试连接远程PostgreSQL时,我收到一条错误,内容如下:

psql:无法连接到服务器:连接被拒绝服务器是否在主机host.domain.com上运行并在端口5432上接受TCP/IP连接?

我该如何解决这个问题?
我正在使用CentOS 4.x版本。

解决方法:首先确保PostgreSQL服务器已启动到远程服务器。

# /etc/init.d/postgresql start

如果它正在运行并且出现以上错误,则需要添加启用TCP/IP支持。
默认情况下,PostgreSQL服务器仅允许从本地计算机或者本地主机连接到数据库。
这是一项安全功能。

步骤1:允许远程IP地址访问PostgreSQL

您需要打开名为/var/lib/pgsql/data/pg_hba.conf的文件。
使用su命令以postgres用户身份登录:

$ su - postgres
$ vi /var/lib/pgsql/data/pg_hba.conf

现在添加以下行。
假设您要允许访问192.168.1.0/24网络:

host all all 192.168.1.0 255.255.255.0 trust

请替换192.168.1.0和255.255.255.0,以反映您自己网络中客户端系统的实际网络IP地址范围。

保存关闭文件。

步骤2:允许通过TCP/IP进行通信

您需要打开PostgreSQL配置文件/var/lib/pgsql/data/postgresql.conf

$ vi /var/lib/pgsql/data/postgresql.conf

现在,通过将tcpip_socket设置为true来绑定并打开TCP/IP端口:

tcpip_socket = true

保存并关闭文件。

步骤3:重新启动PostgreSQL服务器

使用以下命令重新启动PostgreSQL服务器

# /etc/init.d/postgresql restart

这将打开默认端口5432。

步骤4:测试设置

从客户端系统使用psql命令,如下所示:psql -h PostgreSQL-IP-ADDRESS -U USERNAME -d DATABASENAME

通过IP地址192.168.1.5连接到远程服务器,并使用Hyman用户登录以连接到销售数据库,请使用:

$ psql -h 192.168.1.5 -U Hyman -d sales

其中:

  • -h 192.168.1.5:指定运行服务器的机器的主机名或者IP地址(192.168.1.5)。
  • -U Hyman:以Hyman用户名而不是默认用户名连接到数据库。您必须具有帐户和权限才能以Hyman用户身份进行连接。
  • -d sales:指定要连接到的数据库的名称。