使用 pgAdmin III 连接到外部数据库

Sea*_*red 7 postgresql pgadmin remote tcpip

我正在尝试从 pgAdmin III(安装在两台机器上)连接到外部数据库。客户抱怨:

访问数据库被拒绝

服务器不授予对数据库的访问权限:服务器报告

FATAL: no pg_hba.conf entry for host "192.168.108.161",
                                user "postgres",
                            database "postgres",
                                 SSL off 
Run Code Online (Sandbox Code Playgroud)

要访问 PostgreSQL 服务器上的数据库,您首先必须为客户端授予对服务器的主要访问权限(基于主机的身份验证)。在评估pg_hba.conf任何SQL GRANT访问控制列表之前,PostgreSQL 将检查该文件是否存在并启用与您的客户端地址/用户名/数据库匹配的模式。

pg_hba.conf 中的初始设置非常严格,以避免由未经审查但强制的系统设置引起的不必要的安全漏洞。您可能想要添加类似

host all all 192.168.0.0/24 md5 
Run Code Online (Sandbox Code Playgroud)

本示例向专用网络上的所有用户授予对所有数据库的 MD5 加密密码访问权限192.168.0.0/24。您可以使用pg_hba.conf内置在 pgAdmin III 中的编辑器来编辑pg_hba.conf配置文件。

更改后pg_hba.conf,您需要使用pg_ctl或 通过停止并重新启动服务器进程来触发服务器配置重新加载。

服务器明确声明接受来自内部网络的所有连接。

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    all             all             192.168.0.0/24          md5
Run Code Online (Sandbox Code Playgroud)

我已经重新启动了 postmaster 以使更改生效,并且甚至重新启动了整个机器。这里还有什么问题?

Dan*_*ité 7

这一行:

 托管所有所有 192.168.0.0/24 md5

将允许来自匹配192.168.0.XwhereX是任何字节的IP 的连接。

您的错误消息的 IP 地址是192.168.108.161,它与此模式不匹配,因为108不是0

要启用像 那样的地址192.168.X.Y,您需要一个/16而不是/24意味着仅前 16 位是固定的。

像这样:

 托管所有所有 192.168.0.0/16 md5

不要忘记重新加载 Postgresql。从官方文档中,使用pg_ctl reload. 如果这不起作用,那么还有其他方法可以在此问题中列出。