允许其他 PC 连接到 PostgreSQL 数据库的设置(Windows 版)

更新页 :
页面创建日期 :

操作环境

PostgreSQL的
  • PostgreSQL 15的
Windows(服务器)
  • Windows 服务器 2019
Windows(客户端)
  • 窗户11

先决条件

窗户
  • Windows 服务器 2019
  • Windows 服务器 2016
  • 其他版本可能可用,但不受官方支持。

防火墙

在 Windows 中,防火墙会阻止标准端口以外的连接。 必须将其配置为能够在用于连接到 PostgreSQL 的端口上进行连接。

登录到服务器端 Windows 环境后,从开始菜单中键入“防火墙”,然后选择 打开具有高级安全性的Windows Defender防火墙。

当屏幕打开时,从左侧菜单中选择“入站规则”,然后从右侧菜单中单击“新建规则...”。

对于“规则类型”,请选择“端口”。

对于“协议和端口”,请选择“TCP”作为协议。 对于端口,输入默认值 5432。 如果您在 PostgreSQL 安装中指定了不同的端口号,请输入该端口号。

对于“操作”,选择“允许连接”。

在“配置文件”中,选中“域”和“私有”。 我认为你不太可能让一个数据库在一个“公共”环境中被访问,而这个环境会允许不特定的人访问它。

输入可选名称和描述。 请输入,以便于理解打开港口的目的。

添加后,它将出现在列表中。

postgresql.conf文件

检查 postgresql.conf 中的设置。 我认为您不需要在版本 15 中更改它。

以下位置有一个文件,因此请使用记事本应用程序打开它。 请检查路径,因为它因版本而异。

C:\Program Files\PostgreSQL\15\data\postgresql.conf

listen_addresses 查找调用的参数。 如果按以下方式设置,则无需更改它:

listen_addresses = '*'

pg_hba.conf

默认情况下,只能从本地环境访问数据库。

以下位置有一个文件,因此请使用记事本应用程序打开它。 请检查路径,因为它因版本而异。

C:\Program Files\PostgreSQL\15\data\pg_hba.conf

您可能会在更正时出错,因此请在更改文件之前复制并备份文件,以防万一。

如果滚动到底部,您将找到以下行: 这表明 IPv4 只能在本地访问。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  :
host    all             all             127.0.0.1/32            scram-sha-256
  :

将此 ADDRESS 设置为单个或范围,以便可以从其他 PC 访问它。 您设置的值取决于您正在构建的网络。 如果您不确定,请 0.0.0.0/0 允许 all with 或 samenet type 以允许与服务器相同的网络的所有范围。

配置举例

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  :
host    all             all             192.168.0.0/24          scram-sha-256
  :

重新启动服务

pg_hba.conf 这些配置文件仅在 PostgreSQL 启动时读取,因此您需要重新启动服务。 顺便说一句,它是在PostgreSQL启动时加载的,因此如果您重新启动Windows,它将在那个时间加载。

打开开始菜单后,键入“服务”以启动它。

从中间列表中找到并选择“postgresql-x64-15 - PostgreSQL Server 15”。 请注意,名称会因版本而异。 选择后,单击左侧的“重新启动服务”。

检查来自其他 PC 的连接

让我们看看我们是否可以从另一台 PC 连接到数据库。 连接目标信息因环境而异,因此此处仅介绍该过程。 这次我使用 pgAdmin 进行连接,但我认为您也可以连接其他数据库访问工具。

在与数据库服务器分开的客户端PC上启动pgAdmin后,右键单击服务器并选择“注册>服务器...”。

在“常规”选项卡上,“名称”应为可帮助您识别服务器的名称。

选择“连接”选项卡。 输入“主机名/地址”、“维护数据包”、“用户名”和“密码”。 如果您不想每次都输入密码,请打开“保存密码”。 顺便说一句,pdAdmin可能无法解析Host的名称,因此在这种情况下,请直接指定IP地址。

根据需要填写其他输入字段。 完成后,单击“保存”按钮。

如果可以连接到目标服务器的数据库,则验证完成。