对于两个不同的Linux服务器,我在它们上安装了Postgres,没有使用标准配置。他们在不同的网站以外的网络。
Postgres服务正在运行(正如我通过运行ps -ef | grep postgres
检查的那样)。我已经在两个Linux服务器上安装了namp。
这些命令显示端口5432没有被阻塞:
nmap -p 5432 x.x.x.x
我可以从我的Windows机器向任何一个Linux服务器发送SSH。我的Windows桌面上有Heidi SQL。当我尝试用HeidiSQL连接到这些服务器(使用端口5432)时,我得到“无法连接到服务器:连接refused...is --在主机”x.x上运行并在端口5432上接受TCP/IP连接的服务器。这以前从来没有起过作用。
如何让HeidiSQL连接到Linux服务器上的Postgres数据库?
发布于 2017-03-25 15:57:38
首先,确保您可以从Linux机器本身连接到您的PostgreSQL数据库(如果有两个,那么这两台机器上的所有内容都有)。
您可以使用psql
进行此操作:
psql -h localhost -p 5432 postgres
这假设psql
在您的路径上;如果没有.它的位置取决于特定的Linux版本、PostgreSQL版本和安装方法;请指定它们。
如果无法从本地计算机连接到数据库.确保它正在运行,并且它是实际使用5432端口的进程。
接下来,您需要检查您的PostgreSQL配置文件设置。要检查的文件称为postgresql.conf
。它的位置,同样,取决于您如何安装它。检查我的邮递员呢?*.conf文件?。
在配置文件中,您需要检查参数listen_addresses
和port
,这表明PostgreSQL应该连接到哪个TCP地址和端口。您可能阻止了端口5432,并且PostgreSQL在监听它,但只对您的127.0.0.1 (本地主机) IP地址进行监听,但不监听“外部世界”。默认设置(AFAIK)仅侦听“localhost”。
如果您的Linux盒通过端口192.168.1.2连接到外部世界,并且您想使用标准的5432端口,那么您应该拥有:
listen_addresses = 'localhost, 192.168.1.2'
port = 5432
如果您更改了这些参数中的任何一个,则应该停止并重新启动PostgreSQL服务。有些替代方案不需要停止,但在这一点上,我认为这是最简单的方法。
一旦您让PostgreSQL监听了外部世界,您仍然需要允许来自用户的连接。这是通过皮卡_hba.conf文件完成的。您需要一些用户(S)允许从某个IP地址(或某个范围,或所有这些地址,.)连接到您的数据库(S)使用特定的身份验证方法。最常见的设置如下:
# TYPE DATABASE USER ADDRESS METHOD
# local net
host all all 192.168.1.0/24 md5
这意味着:所有用户都可以在地址192.168.1.0上使用TCP/IP主机连接到所有数据库。192.168.1.255,使用md5进行身份验证(意思是密码)。
如果您的Linux盒使用SELinux/iptable,请确保它们允许连接。检查,例如Linux: Iptables允许PostgreSQL服务器传入请求或远程连接到Postgres,打开iptables中Postgres的端口5432。
如果您需要为PostgreSQL连接设置SSL .检查使用SSL保护TCP/IP连接。我建议您只在成功地先拥有不安全(非SSL )连接之后才使用SSL。
检查Windows机器中的防火墙,以及/或Windows和Linux机器之间的任何外部防火墙。如果它们中的任何一个存在并处于活动状态,请确保它们允许通信到端口5432。您的具体情况在很大程度上取决于您的实际设置。资源:如何在Windows 10中打开防火墙端口
确保您可以在ping
中使用您的Linux盒。如果您的windows机器上有telnet
,请尝试telnet (ip-of-your-linux-box) 5432
并检查是否可以连接(一旦键入什么,很可能会断开连接,没关系)。
此时,HeidiSQL应该能够连接到远程Linux机器。(现在,重复第二个)。
发布于 2017-04-03 17:21:08
冒着危险出去
使用两台不同的Linux服务器
其中之一就是Ubuntu。Ubuntu喜欢在5433上运行。在服务器pg_isready
上运行它们的实用程序以找到端口,并确保它接受连接。
https://dba.stackexchange.com/questions/168162
复制相似问题