允许从任何计算机访问Postgresql

3

在研究了与Postgresql相关的GUI后,我发现pgadmin 4桌面客户端是一个不错的选择。

我使用的是Ubuntu 16.04服务器(Digital Ocean上的droplet),并且使用iptables防火墙。

如何允许远程计算机访问?我安装有pgadmin的计算机具有动态ip地址。


你是在云端运行还是在本地网络上运行?你对本地网络有多少控制权? - Bronanaza
这是在云端,使用Digital Ocean droplet。具有根访问权限。pgadmin 4客户端仅安装在我的Windows本地计算机上。 - Bram z
1
从防火墙的角度来看,打开5432端口。至于如何从GUI(我使用Postico)引用它,您需要的主要细节是主机和登录信息。DO应该为您提供一种引用您的计算机的一致方式,无论是IP地址还是像AWS上的主机,例如ec2.amazon-west-2-sdfasdf-324345asdf.aws.com。请使用它。 - Bronanaza
2个回答

10

你是想从本地网络管理PostgreSQL还是允许来自广域网的其他用户连接到你的PostgreSQL服务器?

允许自己在同一子网上管理服务器非常容易。允许来自广域网的用户访问您的服务器是不明智的。

若要允许远程访问:您需要编辑pg_HBA.conf文件。默认情况下,它仅允许本地用户连接到数据库,这是出于安全考虑的设置。

以下片段来自我的PostgreSQL服务器:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

这意味着只允许与127.0.0.1/32匹配的主机访问我的服务器。

如果您希望允许子网中的所有计算机访问您的Postgresql服务器,您可以执行以下操作:

# IPv4 local connections:
host    all             all             192.168.0.1/24            md5

以上示例可以让您开始运行,但最好去简要阅读一下postgresql文档中关于pg_hba.conf文件的内容。

如果您特别鲁莽和不负责任,并且喜欢冒险并经常感到恐惧和憎恶,那么您可以在pg_hba.conf文件中使用以下行,尽管我强烈反对这样做。

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

这基本上意味着“来自任何地方的任何人都可以访问我的Postgresql服务器”,我提供它只是为了说明需要多么谨慎。

当前版本的Postgresql 9.6文档可以在此处找到以前的版本也可在该链接附近找到,但在pg_hba.conf的情况下,似乎在版本之间没有发生变化。


这篇文章可能需要更新到新的认证方法 scram-sha-256,以替换 md5。 - Gemini15

2

我想要通过像pgadmin这样的客户端从远程桌面计算机连接到我的云托管Postgresql数据库。

为了实现这一点,我通过以下命令在iptables中打开了5432端口:

iptables -I INPUT 1 -m tcp -p tcp --dport 5432 -j ACCEPT 
service iptables save 
service iptables restart  

我已允许在Postgresql中从任何位置访问,方法如下:
nano /etc/postgresql/9.5/main/postgresql.conf

将listen_address修改为如下内容:

listen_addresses = '*'

保存并关闭nano编辑器,然后执行postgresql重启命令。
service postgresql restart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接