我在本地服务器(Ubuntu)上安装了 PostgreSQL,IP 为 192.168.1.10。现在,我正在尝试使用 pgAdmin 从 IP 为 192.168.1.11 的客户端计算机 (Ubuntu) 访问数据库。
我知道我必须在 postgresql.conf 和 pg_hba.conf 中进行更改以允许客户端连接。你能指导我吗?
我在本地服务器(Ubuntu)上安装了 PostgreSQL,IP 为 192.168.1.10。现在,我正在尝试使用 pgAdmin 从 IP 为 192.168.1.11 的客户端计算机 (Ubuntu) 访问数据库。
我知道我必须在 postgresql.conf 和 pg_hba.conf 中进行更改以允许客户端连接。你能指导我吗?
通过 pgAdmin3 远程连接到 PostgreSQL 服务器实际上是一个 3 步过程。
注意:我使用 Ubuntu 11.04 和 PostgreSQL 8.4。
您必须让 PostgreSQL 侦听远程传入 TCP 连接,因为默认设置只允许侦听环回接口上的连接。为了能够远程访问服务器,您必须将以下行添加到文件中/etc/postgresql/8.4/main/postgresql.conf:
听地址 = '*'
默认情况下,PostgreSQL 拒绝从任何远程地址接收的所有连接,您必须通过将此行添加到/etc/postgresql/8.4/main/pg_hba.conf:
托管所有所有 0.0.0.0/0 md5
这是一个访问控制规则,如果他可以提供有效的密码(md5 关键字),任何人都可以从任何地址登录。您可以使用所需的网络/掩码而不是 0.0.0.0/0 。
将这些修改应用于配置文件后,您需要重新启动 PostgreSQL 服务器。现在可以使用用户名和密码远程登录到您的服务器。
如果您使用的是 PostgreSQL 8 或更高版本,您可能需要修改listen_addresses
./etc/postgresql/8.4/main/postgresql.conf
尝试添加该行:
listen_addresses = *
这将告诉 PostgreSQL 监听所有网络接口上的连接。
如果未明确设置,则此设置默认为localhost
这意味着它将只接受来自同一台机器的连接。
在linux终端试试这个:
sudo service postgresql start
: 启动服务器sudo service postgresql stop
: 停止你的服务器sudo service postgresql status
: 检查服务器状态我不必更改我的 prostgresql.conf 文件,但是,我确实必须根据我的 psql 通过命令行连接并且 pgAdmin 没有在 RDS 上与 AWS 连接来执行以下操作。
我确实将我的 RDS 设置为可公开访问。我确保我的 ACL 和安全组是完全开放的并且仍然存在问题,所以我做了以下操作:
sudo find . -name *.conf
然后sudo nano ./data/pg_hba.conf
添加到 pg_hba.conf 文件中的指令顶部,host all all 0.0.0.0/0 md5
pgAdmin 自动让我登录。
host all all md5
这也适用于没有任何 IP 地址的 pg_hba.conf 文件
,这也适用于我的 IP 地址host all all <myip>/32 md5
附带说明一下,我的 RDS 在我的默认 VPC 中。我的非默认 VPC 中有一个相同的 RDS 实例,其安全组、ACL 和安全组设置与我的默认 VPC 相同,但我无法让它工作。不知道为什么,但那是另一天。
通过 SSH 隧道连接到 PostgreSQL
如果您不想为任何流量打开端口 5432,或者您不想将 PostgreSQL 配置为侦听任何远程流量,则可以使用 SSH 隧道建立与 PostgreSQL 实例的远程连接。就是这样:
对于红帽 Linux
sudo vi /var/lib/pgsql9/data/postgresql.conf
pgsql9 是安装的 postgres 版本的文件夹,其他的可能不同
从 listen_addresses = 'localhost' 更改了 listen_addresses = '*' 然后
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start
检查你的防火墙。当您禁用它时,您可以连接。如果您想要/不能禁用防火墙,请为您的远程连接添加规则。