远程访问 postgresql 数据库

Øyv*_*nd 55 vps remote-access postgresql

我需要从运行 12.10 和 postgresql 9.1 的 DigitalOcean 的 VPS 上的远程机器访问 postgresql 数据库。

我该怎么做呢?我注意到端口 5432 已关闭,我该如何打开它?

小智 94

要打开端口 5432 编辑/etc/postgresql/9.1/main/postgresql.conf并更改

listen_addresses='localhost'
Run Code Online (Sandbox Code Playgroud)

listen_addresses='*'
Run Code Online (Sandbox Code Playgroud)

并重新启动您的 DBMS

invoke-rc.d postgresql restart
Run Code Online (Sandbox Code Playgroud)

现在你可以连接

$ psql -h hostname -U username -d database
Run Code Online (Sandbox Code Playgroud)

如果您无法对自己进行身份验证,那么您需要授予您的用户访问您的数据库的权限

编辑您的

/etc/postgresql/9.1/main/pg_hba.conf
Run Code Online (Sandbox Code Playgroud)

并添加

host all all all md5
Run Code Online (Sandbox Code Playgroud)

(这是一个广泛开放的访问。要更严格的控制,请参阅pg_hba.conf 文档并根据您的需要进行调整)。

此后您还需要重新加载

invoke-rc.d postgresql reload
Run Code Online (Sandbox Code Playgroud)

不用说了,这是一个基本的配置,现在你应该考虑修改你的防火墙并提高你的DBMS的安全性。

  • 特别是,您应该启用 SSL。 (4认同)
  • 服务器在监听吗?检查`netstat -nlt|grep :5432` (3认同)
  • 我会以更严格的方式插入主机行:`host <database> <user> <remote_client_IPaddress>/24 md5` (2认同)

小智 27

这不再起作用,如果它曾经这样做过:

托管所有所有 * md5

正确的可能行是:

托管所有所有 0.0.0.0/0 md5 #ipv4 范围

托管所有所有 ::0/0 md5 #ipv6 范围

host all all all md5 #all ip

来源

  • 这绝对成功了。上面的答案肯定是行不通的。 (4认同)