允许从任何计算机访问 Postgresql

Allow access to Postgresql from any computer

在研究了 Postgresql 的 GUI 之后,我发现 pgadmin 4 桌面客户端是一个有效的选择。

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

如何允许从远程计算机访问?我安装了 pgadmin 的电脑有动态 ip。

您是要从本地网络管理 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

上面的例子会让你继续下去,但最好还是简单地阅读一下 pg_hba.conf 文件的 postgresql 文档。

如果你特别鲁莽和不负责任,喜欢过危险的生活,并且定期感到恐惧和厌恶,你会在你的 pg_hba.conf 文件中使用以下行,尽管我强烈反对它。

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

这基本上是说 "Anybody from anywhere can access my Postgresql server" 我提供它只是为了说明您必须多么小心。

The documentation for the current version of Postgresql 9.6 can be found here 以前的版本在 link 附近也可用,但在 pg_hba.conf 的情况下,版本之间似乎没有变化。

我想使用 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