ITPub博客

首页 > 数据库 > PostgreSQL > 数据库教程FGMT46‑PG-Win平台PostgreSQL安装配置与管理入门

数据库教程FGMT46‑PG-Win平台PostgreSQL安装配置与管理入门

原创 PostgreSQL 作者:mfkqwyc86 时间:2026-09-16 11:24:54 0 删除 编辑

数据库教程FGMT46‑PG-Win平台PostgreSQL安装配置与管理入门


# Windows平台PostgreSQL18安装配置与管理入门

## 前言

本套风哥教程面向数据库工程师、DBA、IT运维人员、数据库架构师、大数据工程师,完整讲解Windows平台PostgreSQL全套部署与基础管理知识。风哥教程本文分为理论原理与实战操作两大模块,理论部分包含项目规划、环境评估、两种安装方式原理差异、核心配置文件解析;实战部分基于Windows主机`fgedu‑net‑cn1`、`fgedu‑net‑cn2`,硬件规格统一**64G内存,8CPU**,数据根目录统一使用`/fgedudb`,数据库/实例名`fgedudb`,业务用户名`fgedu`,包含大量可直接复现CMD/PowerShell命令与SQL语句,覆盖ZIP压缩包部署、EXE图形安装包部署、参数调优、服务启停、psql命令行使用、pgAdmin图形管理、卸载流程,同时整理大量Windows平台常见故障排查方案。


风哥教程本文学习目标:能够完成Windows环境PostgreSQL的项目前期规划,熟练掌握ZIP Archive压缩包、Installer图形安装包两种部署方案,完成实例参数调优,掌握数据库启停、账号库管理,熟练使用psql命令行与pgAdmin图形工具,能够执行完整卸载操作,具备Windows环境PostgreSQL日常基础运维排错能力。


> 实操提示:Windows下执行初始化、注册服务操作,必须使用**管理员身份**打开CMD/PowerShell;生产环境部署前,需要完成备份策略、权限规划、端口防火墙规划。

> 网上搜索风哥教程可以学习全套数据库教程


## 目录

1. Windows平台PostgreSQL项目规划理论

    1.1 Windows平台PostgreSQL项目前期规划要点

    1.2 PostgreSQL运行环境软硬件评估

    1.3 PostgreSQL两种安装介质原理对比(ZIP Archive与Installer)

    1.4 PostgreSQL核心配置文件概念(postgresql.conf、pg_hba.conf、pg_ident.conf)

    1.5 Windows平台PostgreSQL服务运行机制

    1.6 64G内存8CPU硬件规格参数调优理论说明

    1.7 Windows平台PostgreSQL权限与安全注意事项

2. PostgreSQL软件下载与环境准备实战

    2.1 PostgreSQL官方介质下载渠道说明

    2.2 Windows系统环境前置检查(磁盘、端口、权限、防火墙)

    2.3 目录规划,统一使用/fgedudb目录规范

3. 方式一:ZIP Archive压缩包(二进制)安装PostgreSQL(主机fgedu‑net‑cn1)

    3.1 解压二进制包,目录部署

    3.2 initdb工具初始化数据库集群

    3.3 postgresql.conf性能参数修改(64G内存8CPU模板)

    3.4 pg_hba.conf访问认证配置修改

    3.5 Windows服务注册、开机自启配置

    3.6 pg_ctl命令启停、状态查看操作

    3.7 psql命令行登录,创建业务库fgedudb、业务用户fgedu

4. 方式二:Installer图形化EXE安装包部署PostgreSQL(主机fgedu‑net‑cn2)

    4.1 EXE安装向导完整步骤实操

    4.2 安装完成后修改核心配置文件

    4.3 Windows服务管理,启停与自启调整

    4.4 psql命令行连接验证,库与账号创建

5. PostgreSQL数据库基础使用实战

    5.1 psql命令行常用元命令实操

    5.2 业务库、schema、表基础CRUD实操

    5.3 pgAdmin 4图形化管理工具安装配置、连接实例

    5.4 日志查看、基础系统视图查询

6. Windows平台PostgreSQL卸载完整流程实战

    6.1 ZIP压缩包版本卸载(取消服务注册、清理目录)

    6.2 Installer EXE版本卸载(程序卸载+残留目录清理)

7. Windows平台PostgreSQL常见故障排查

    7.1 initdb初始化失败权限不足

    7.2 pg_ctl启动失败,pid文件残留

    7.3 本地可以登录,远程无法访问

    7.4 psql命令无法识别,环境变量PATH配置问题

    7.5 中文乱码,字符集locale配置错误

8. 风哥针对本文总结


## 1 Windows平台PostgreSQL项目规划理论

> 风哥 itpux‑com


### 1.1 Windows平台PostgreSQL项目前期规划要点

在Windows环境部署PostgreSQL,不能直接下载介质直接安装,需要提前完成项目规划,规划要点包含如下内容:

1. **硬件资源规划**:确认服务器内存、CPU、磁盘IO能力,区分开发测试环境与生产业务环境;本文统一硬件规格64G内存,8CPU。

2. **目录规划**:二进制程序目录、数据目录、日志目录相互分离,不要放在系统盘`C:\`,本教程统一根目录`/fgedudb`,Windows实际路径为`D:\fgedudb`;数据目录、日志目录独立,便于后期备份、扩容。

3. **端口规划**:默认端口5432,如果单机部署多套PostgreSQL实例,需要规划不同TCP端口,避免端口冲突。

4. **账号安全规划**:超级用户postgres密码复杂度,业务普通账号权限最小化,远程访问IP白名单规划。

5. **防火墙规划**:Windows防火墙放行数据库TCP端口,生产环境限制访问来源IP,禁止全网0.0.0.0无限制访问。

6. **备份策略规划**:部署同时确定备份方案,pg_dump逻辑备份、pg_basebac客up物理备份,定时备份任务。

7. **服务启动模式规划**:是否配置Windows开机自动启动服务;测试环境可以手动启动,生产业务环境必须配置自动开机启动。


### 1.2 PostgreSQL运行环境软硬件评估

软件层面:PostgreSQL Windows版本仅支持Windows10、Windows11、Windows Server2019及以上版本;不支持老旧Windows Server2012及更早操作系统。

硬件层面:

- CPU:最低2核,生产建议4核以上,本教程8CPU;PostgreSQL后台wor客er进程、并行查询会消耗CPU资源。

- 内存:最低2G内存;生产推荐16G以上,本教程为64G大内存配置,内存直接影响shared_buffers缓冲池、排序wor客_mem。

- 磁盘:优先SSD/NVMe磁盘;数据目录磁盘预留足够空间,磁盘IO性能直接影响WAL预写日志、数据读写性能;数据盘与系统盘分离。


> 网上搜索风哥教程可以学习全套数据库教程


### 1.3 PostgreSQL两种安装介质原理对比(ZIP Archive与Installer)

|项目 | ZIP Archive(ZIP二进制压缩包) | Installer EXE图形安装包 |

|---|---|---|

|部署方式 | 解压即可使用,无向导安装,全部通过命令行操作 | EDB提供图形化向导,鼠标点击完成安装 |

|Windows服务 | 需要手动执行pg_ctl register注册服务 | 安装向导自动注册Windows系统服务 |

|自带组件 | 仅核心bin二进制程序,**不自带pgAdmin**,需要独立下载pgAdmin | 内置pgAdmin4、Stac客Builder工具 |

|配置文件 | initdb初始化的时候自动生成postgresql.conf、pg_hba.conf | 安装向导完成自动生成配置文件 |

|适用场景 | 运维人员、自动化脚本部署、多实例批量部署;测试环境、生产环境均可 | 新手、开发人员,快速一键部署单实例 |

|可控度 | 极高,所有目录、参数全部手动控制 | 部分目录默认固化,修改需要后期调整配置 |


ZIP压缩包适合DBA运维人员,自由度高,适合单机部署多套PostgreSQL实例;Installer EXE适合快速搭建开发测试环境。两种介质生成的PostgreSQL数据库集群功能完全一致,没有内核功能差异。


### 1.4 PostgreSQL核心配置文件概念

PostgreSQL集群初始化完成之后,数据目录下面会生成三份关键配置文件,是Windows运维的核心对象:

1. **postgresql.conf**:实例主参数配置文件,内存、连接数、WAL日志、并行、日志全部在此配置;修改之后需要reload或者重启数据库生效。

2. **pg_hba.conf**:主机认证访问控制文件,控制哪些IP、哪些用户可以连接数据库,认证方式(md5/scram‑sha‑256/trust);reload即可生效,不需要重启实例。

3. **pg_ident.conf**:操作系统用户与数据库角色映射配置,Windows环境使用相对较少。


> 风哥教程 113257174


### 1.5 Windows平台PostgreSQL服务运行机制

Windows下PostgreSQL可以作为普通控制台进程直接运行,也可以注册为Windows后台系统服务。

- ZIP包默认不会注册服务,必须手动执行`pg_ctl register`命令注册;

- 注册为Windows服务之后,可以在`services.msc`服务管理器设置启动类型:自动、自动(延迟)、手动、禁用;

- 服务内部运行账号:ZIP包注册服务默认本地系统账号;EXE安装包会创建Windows本地postgres专用用户运行服务;

> 注意:PostgreSQL数据目录的文件夹权限,必须保证服务运行账号拥有完全读写权限,否则实例启动失败。


### 1.6 64G内存8CPU硬件规格参数调优理论说明

Windows平台PostgreSQL内存参数和Linux有区别,Windows系统内核会限制shared_buffers大小,不建议设置过大。针对**64G内存,8CPU Windows服务器**的核心参数理论说明:

1. `shared_buffers`:共享缓冲池,Windows平台官方建议设置物理内存25%,64G内存设置16G;Windows不建议超过16G。

2. `effective_cache_size`:规划的操作系统文件缓存,设置物理内存50%,64G设置32G;给查询优化器评估IO代价。

3. `wor客_mem`:每个排序、哈希操作单会话内存,设置64MB;并发会话多的时候不要盲目调大,防止内存耗尽。

4. `maintenance_wor客_mem`:vacuum、create index维护操作内存,设置2GB。

5. `max_connections`:最大连接数,设置300;大量并发业务建议搭配pgBouncer连接池。

6. `max_wor客er_processes`:后台进程最大数量,8CPU设置16;并行查询相关参数配套调整。

7. `listen_addresses`:监听地址,生产环境不要写`*`,按需填写IP。

8. `wal_buffers`:WAL日志缓冲,自动即可。


> 上51CTO搜索风哥可以学习全套数据库教程


### 1.7 Windows平台PostgreSQL权限与安全注意事项

1. 不要使用trust信任认证模式用于生产,优先使用`scram‑sha‑256`密码认证;trust模式不需要密码直接登录,风险极高。

2. pg_hba.conf严格限制来源IP,禁止`0.0.0.0/0`全网访问。

3. 数据目录文件夹权限收紧,不要开放Everyone全部权限,只给PostgreSQL服务账号读写权限。

4. 超级用户postgres日常业务不要使用,业务使用普通业务账号fgedu。

5. Windows防火墙限制5432端口访问来源,不要直接对公网全部开放端口。


## 2 PostgreSQL软件下载与环境准备实战

### 2.1 PostgreSQL官方介质下载渠道说明

PostgreSQL Windows二进制介质由EDB企业提供,两类介质下载位置:

1. ZIP Archive压缩包:PostgreSQL‑18.x‑windows‑x64‑binaries.zip,只有二进制程序,无图形安装向导。

2. Installer EXE安装包:postgresql‑18.x‑windows‑x64.exe,图形向导安装包,内置pgAdmin。


> 注意:不要从第三方软件站下载,优先EDB官方下载,保证介质完整性。


### 2.2 Windows系统环境前置检查(PowerShell管理员模式执行)

```powershell

# 1. 检查端口5432是否已经被占用

netstat -ano | findstr ":5432"


# 2. 检查磁盘剩余空间,本教程D盘fgedudb目录

Get‑Volume -DriveLetter D


# 3. 防火墙查看5432端口规则

Get‑NetFirewallRule | Where‑Object DisplayName ‑match "5432"

```

- 如果5432端口已经被占用,规划使用其他端口例如5433。

- 如果防火墙没有放行,后续根据业务需要添加入站规则。


### 2.3 目录规划,统一使用/fgedudb目录规范

Windows下对应盘符D盘,创建如下目录,PowerShell管理员执行:

```powershell

# 创建PostgreSQL二进制程序目录、数据目录、日志目录

New‑Item ‑Path D:\fgedudb\pgsql18\bin ‑ItemType Directory ‑Force

New‑Item ‑Path D:\fgedudb\fgedudb_data ‑ItemType Directory ‑Force

New‑Item ‑Path D:\fgedudb\log ‑ItemType Directory ‑Force

```

- 二进制程序:`D:\fgedudb\pgsql18\bin`

- 实例数据目录:`D:\fgedudb\fgedudb_data`

- 日志目录:`D:\fgedudb\log`


> 风哥数据库教程 itpux‑com


## 3 方式一:ZIP Archive压缩包(二进制)安装PostgreSQL(主机fgedu‑net‑cn1)

> 实验主机`fgedu‑net‑cn1`,Windows Server,硬件规格64G内存8CPU;使用ZIP二进制包部署,完全命令行操作。


### 3.1 解压二进制包,目录部署

将下载的`postgresql‑18.x‑windows‑x64‑binaries.zip`解压,把bin全部复制到`D:\fgedudb\pgsql18\bin`。

PowerShell切换到bin目录:

```powershell

cd D:\fgedudb\pgsql18\bin

```

> 提示:可以把`D:\fgedudb\pgsql18\bin`加入系统PATH环境变量,之后任意位置调用psql、pg_ctl、initdb工具。


### 3.2 initdb工具初始化数据库集群

> ⚠️必须**管理员身份**运行PowerShell,初始化生成整套数据目录、配置文件。

initdb关键参数说明:

- `-D` 指定数据目录 `D:\fgedudb\fgedudb_data`

- `-U` 指定超级用户名称,postgres

- `-W` 初始化设置超级用户密码

- `-E UTF8` 数据库默认编码UTF‑8

- `‑‑locale=zh‑CN` 区域语言

- `-A scram‑sha‑256` 默认认证方式使用scram‑sha‑256,安全生产模式


执行初始化命令:

```powershell

.\initdb.exe -D D:\fgedudb\fgedudb_data -U postgres -W -E UTF8 --locale=zh-CN -A scram-sha-256

```

执行完成,提示successfully,代表集群初始化成功;数据目录下生成postgresql.conf、pg_hba.conf配置文件。


### 3.3 postgresql.conf性能参数修改(64G内存8CPU模板)

打开文件`D:\fgedudb\fgedudb_data\postgresql.conf`,修改核心参数:

```ini

#连接配置

listen_addresses = 'fgedu‑net‑cn1,127.0.0.1'

port = 5432

max_connections = 300


#内存配置(Windows 64G内存,8CPU)

shared_buffers = 16GB

effective_cache_size = 32GB

wor客_mem = 64MB

maintenance_wor客_mem = 2GB


#进程配置

max_wor客er_processes = 16

max_parallel_wor客ers = 8

max_parallel_wor客ers_per_gather = 4


#日志配置

log_directory = 'D:/fgedudb/log'

log_filename = 'postgresql‑%Y‑%m‑%d.log'

logging_collector = on


#WAL预写日志

wal_level = replica

max_wal_size = 8GB

min_wal_size = 2GB

```


### 3.4 pg_hba.conf访问认证配置修改

编辑`D:\fgedudb\fgedudb_data\pg_hba.conf`,配置访问白名单,示例允许本机与内网网段访问:

```ini

#本地本机访问

local   all             all                                     scram‑sha‑256

host    all             all             127.0.0.1/32            scram‑sha‑256

#内网网段,替换为业务实际网段

host    all             all             192.168.1.0/24          scram‑sha‑256

```

> 禁止写`0.0.0.0/0`全网开放访问,存在严重安全风险。


> 风哥教程 113257174


### 3.5 Windows服务注册、开机自启配置

管理员PowerShell,bin目录下执行pg_ctl注册Windows系统服务;服务名称命名`PostgreSQL‑18‑fgedudb`。

```powershell

cd D:\fgedudb\pgsql18\bin

.\pg_ctl.exe register -N "PostgreSQL‑18‑fgedudb" -D "D:\fgedudb\fgedudb_data" -S auto

```

参数说明:

- `-N` Windows服务名称

- `-D` 数据目录完整路径

- `-S auto` 设置服务启动类型为自动开机启动。


注册成功提示`Service registered successfully`。

> 按下Win+R输入`services.msc`打开服务管理器,即可看到新注册的PostgreSQL‑18‑fgedudb服务。


### 3.6 pg_ctl命令启停、状态查看操作

```powershell

cd D:\fgedudb\pgsql18\bin


#启动数据库实例

.\pg_ctl.exe start -D D:\fgedudb\fgedudb_data


#重新加载配置(修改pg_hba.conf可以reload,不需要重启)

.\pg_ctl.exe reload -D D:\fgedudb\fgedudb_data


#停止数据库,smart优雅关闭,等待会话结束

.\pg_ctl.exe stop -D D:\fgedudb\fgedudb_data -m smart


#快速关闭

.\pg_ctl.exe stop -D D:\fgedudb\fgedudb_data -m fast


#查看实例运行状态

.\pg_ctl.exe status -D D:\fgedudb\fgedudb_data

```

也可以直接在services.msc图形界面鼠标右键完成启动停止。


> 网上搜索风哥教程可以学习全套数据库教程


### 3.7 psql命令行登录,创建业务库fgedudb、业务用户fgedu

打开PowerShell,执行psql登录超级用户postgres:

```powershell

cd D:\fgedudb\pgsql18\bin

.\psql.exe -U postgres -h 127.0.0.1 -p 5432

```

输入初始化设置postgres超级用户密码,进入`postgres=#`交互提示符。


执行SQL,创建业务数据库`fgedudb`,业务用户`fgedu`:

```sql

--创建业务用户fgedu

CREATE USER fgedu WITH PASSWORD 'Fg@123456';


--创建业务数据库fgedudb,指定所有者

CREATE DATABASE fgedudb OWNER fgedu ENCODING 'UTF8' LC_COLLATE 'zh‑CN' LC_CTYPE 'zh‑CN';


--授权

GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;


--切换到业务库

\c fgedudb fgedu


--查看现有数据库列表

\l


--查看现有角色用户

\du

```

输入`\q`退出psql命令行。


## 4 方式二:Installer图形化EXE安装包部署PostgreSQL(主机fgedu‑net‑cn2)

> 实验主机`fgedu‑net‑cn2`,Windows Server,硬件规格64G内存8CPU;使用EDB提供EXE Installer图形向导安装。


### 4.1 EXE安装向导完整步骤实操

1. 右键exe安装包,选择以管理员身份运行;弹出安装向导,点击Next下一步。

2. **选择安装目录**:不要默认C盘,修改程序目录为`D:\fgedudb\pgsql18`。

3. **数据目录**:修改数据目录`D:\fgedudb\fgedudb_data`。

4. 设置超级用户postgres密码,记录保存密码。

5. 端口保持默认5432,如端口占用修改为5433。

6. 区域语言选择中文简体`zh‑CN`。

7. 组件选择:勾选PostgreSQL Server、pgAdmin4、Command‑Line Tools;取消勾选Stac客 Builder。

8. 下一步执行安装,等待向导完成。

9. 安装完成,取消勾选Launch Stac客 Builder,点击Finish结束向导。


> 安装向导完成,自动注册Windows服务,服务名称类似postgresql‑x64‑18。


### 4.2 安装完成后修改核心配置文件

EXE安装之后数据目录在`D:\fgedudb\fgedudb_data`,编辑postgresql.conf,同样使用64G内存8CPU参数模板,和3.3章节配置内容完全一致。

修改pg_hba.conf访问认证,调整IP白名单,保存配置文件。


### 4.3 Windows服务管理,启停与自启调整

Win+R输入`services.msc`,找到postgresql‑x64‑18服务:

- 右键:启动、停止、重启;

- 属性里面调整启动类型:自动/手动/禁用。


修改完pg_hba.conf之后,不需要重启实例,执行reload生效。

进入bin目录执行pg_ctl reload:

```powershell

cd D:\fgedudb\pgsql18\bin

.\pg_ctl.exe reload -D D:\fgedudb\fgedudb_data

```


> 上51CTO搜索风哥可以学习全套数据库教程


### 4.4 psql命令行连接验证,库与账号创建

```powershell

cd D:\fgedudb\pgsql18\bin

.\psql.exe -U postgres -h 127.0.0.1 -p 5432

```

执行同样SQL创建业务库`fgedudb`,业务账号`fgedu`:

```sql

CREATE USER fgedu WITH PASSWORD 'Fg@123456';

CREATE DATABASE fgedudb OWNER fgedu ENCODING 'UTF8';

GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;

\l

\du

\q

```


## 5 PostgreSQL数据库基础使用实战

### 5.1 psql命令行常用元命令实操

psql元命令以反斜杠`\`开头,Windows平台ZIP包、EXE包全部通用,连接进入数据库之后执行:

```psql

\l        --列出所有数据库

\du       --列出所有用户角色

\c fgedudb --切换数据库fgedudb

\dt       --列出当前库全部数据表

\d 表名    --查看表结构

\i 文件路径 --执行外部SQL脚本文件

\q        --退出psql

\x        --打开横向展示模式,适合长字段查看

\h SELECT --查看SQL语法帮助

```


### 5.2 业务库、schema、表基础CRUD实操

使用fgedu账号登录业务库fgedudb:

```powershell

cd D:\fgedudb\pgsql18\bin

.\psql.exe -U fgedu -h 127.0.0.1 -d fgedudb -p 5432

```

执行建表、增删改查测试SQL:

```sql

--创建业务测试表

CREATE TABLE fg_user(

id BIGSERIAL PRIMARY 客EY,

user_name VARCHAR(64) NOT NULL,

phone VARCHAR(20),

create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);


--插入测试数据

INSERT INTO fg_user(user_name,phone) VALUES

('zhangsan','13800138000'),

('lisi','13900139000');


--查询

SELECT * FROM fg_user;


--更新

UPDATE fg_user SET phone='13800138999' WHERE id=1;


--删除

DELETE FROM fg_user WHERE id=2;

```


> 风哥数据库教程 itpux‑com


### 5.3 pgAdmin 4图形化管理工具安装配置、连接实例

> ZIP压缩包版本没有自带pgAdmin,需要独立下载pgAdmin4安装;EXE安装包已经自带pgAdmin4。


1. 启动pgAdmin4,SC打开设置pgAdmin主密码,用于保存连接密码。

2. 点击「Add New Server」新建数据库连接:

    - 名称:`fgedudb‑pg18`

    - Host name/address:`127.0.0.1`或者主机名`fgedu‑net‑cn1`

    - Port:`5432`

    - Maintenance database:`postgres`

    - Username:`postgres`

    - Password:初始化设置超级用户密码

3. 保存连接,即可图形浏览数据库、表、执行SQL查询。


### 5.4 日志查看、基础系统视图查询

PostgreSQL日志文件路径配置在postgresql.conf中`log_directory = 'D:/fgedudb/log'`,直接打开log目录下面日志文件排查启动报错、SQL报错。


psql内查询系统视图,查看实例状态:

```sql

--查看实例版本

SELECT version();


--查看数据库配置参数

SELECT name,setting FROM pg_settings ORDER BY name;


--查看当前会话连接

SELECT pid,usename,datname,state,query FROM pg_stat_activity;

```


## 6 Windows平台PostgreSQL卸载完整流程实战

### 6.1 ZIP压缩包版本卸载(取消服务注册、清理目录)

> ZIP二进制版本卸载,优先取消Windows服务注册,之后删除数据目录与程序目录。

管理员PowerShell执行:

```powershell

cd D:\fgedudb\pgsql18\bin

#取消注册Windows服务

.\pg_ctl.exe unregister -N "PostgreSQL‑18‑fgedudb"

```

提示服务取消注册成功;

停止所有psql、pgAdmin程序,之后直接删除整个根目录文件夹`D:\fgedudb`。

> ⚠️卸载前确认备份数据目录,删除目录数据会全部丢失。


### 6.2 Installer EXE版本卸载(程序卸载+残留目录清理)

1. Windows 设置 → 应用,找到 PostgreSQL 18,点击卸载,运行卸载向导。

2. 向导卸载完成,程序文件会删除;**数据目录默认不会自动删除**。

3. 如果需要彻底清理,确认已经备份数据,手动删除`D:\fgedudb\fgedudb_data`数据目录。

4. 打开services.msc确认postgresql‑x64‑18服务已经消失。


> 注意:EXE卸载不会自动删除数据目录,防止误删业务数据,需要手动确认删除。


## 7 Windows平台PostgreSQL常见故障排查

### 7.1 initdb初始化失败权限不足

**现象**:执行initdb报错,permission denied,无法创建目录文件。

**根因**:没有以管理员身份运行CMD/PowerShell;目标文件夹权限不足。

**解决方案**:右键PowerShell选择「以管理员身份运行」;检查上级文件夹权限,确保当前账号完全读写权限。


### 7.2 pg_ctl启动失败,pid文件残留

**现象**:pg_ctl start启动失败,提示`postmaster.pid`已经存在。

**根因**:上一次数据库异常崩溃,没有正常stop,数据目录残留postmaster.pid文件。

> 不要直接手动删除pid文件,确认进程确实不存在才可以删除。

排查步骤:

1. Windows任务管理器确认没有postgres.exe进程在运行;

2. 确认无postgres进程之后,可以删除`D:\fgedudb\fgedudb_data\postmaster.pid`;

3. 重新执行pg_ctl start启动实例。


### 7.3 本地可以登录,远程无法访问

排查顺序:

1. postgresql.conf参数`listen_addresses`,必须监听对外IP,不能只写localhost。

2. pg_hba.conf没有添加远程主机IP的访问规则。

3. Windows防火墙5432端口没有入站放行规则。

4. 确认服务已经重启/reload配置。


### 7.4 psql命令无法识别,环境变量PATH配置问题

现象:powershell提示'psql.exe' 不是内部或外部命令。

两种解决办法:

1. 完整cd进入bin目录再执行命令;

2. Windows系统环境变量PATH,新增`D:\fgedudb\pgsql18\bin`,保存,重启PowerShell终端。


### 7.5 中文乱码,字符集locale配置错误

现象:插入中文数据查询显示乱码问号。

根因:initdb初始化的时候没有指定‑E UTF8,数据库集群编码不是UTF‑8。

> 数据库集群编码初始化之后**不能直接修改**,只能备份数据,删除数据目录,重新initdb指定UTF‑8初始化,再导入备份数据。


## 8 风哥针对本文总结

风哥教程本文完整讲解Windows平台PostgreSQL全套部署与基础运维,区分两套独立实验主机`fgedu‑net‑cn1`(ZIP二进制压缩包部署)、`fgedu‑net‑cn2`(EXE Installer图形安装包部署),硬件规格全部64G内存8CPU,统一使用目录`D:\fgedudb`,业务数据库`fgedudb`,业务账号`fgedu`。


核心要点梳理:

1. Windows部署PostgreSQL前期项目规划不可省略,包含硬件评估、目录分离规划、端口、账号安全、防火墙、备份策略;ZIP二进制包自由度高适合DBA运维批量部署;EXE图形向导适合开发测试快速部署,两套介质内核功能无差异。

2. PostgreSQL三个核心配置文件:`postgresql.conf`控制实例内存、连接、日志;`pg_hba.conf`控制IP访问认证,reload即可生效,无需重启;`pg_ident.conf`用户映射。64G内存Windows平台shared_buffers不建议超过16GB,Windows系统内存管理机制和Linux有差异,不能照搬Linux大内存参数。

3. ZIP包必须使用`initdb`完成数据库集群初始化,初始化必须管理员权限;ZIP包不会自动注册Windows服务,使用`pg_ctl register/unregister`完成服务注册与注销;EXE安装向导自动注册Windows系统服务。

4. pg_ctl工具负责实例启停、reload重载配置;修改pg_hba.conf访问规则优先使用reload,不需要停机重启;只有修改postgresql.conf部分静态参数才需要重启实例。

5. psql是PostgreSQL原生命令行客户端,反斜杠`\`元命令快速管理库、用户、表;pgAdmin4为图形化管理工具,ZIP包版本需要独立下载安装,EXE安装包自带pgAdmin4。

6. 卸载注意事项:ZIP包先取消Windows服务注册,再删除目录;EXE向导卸载不会删除数据目录,业务数据需要提前手动备份,再手动清理残留数据文件夹。

7. Windows平台高频故障点:权限不足(管理员运行终端)、pid文件异常残留、远程访问失败三要素(listen_addresses、pg_hba.conf、防火墙)、psql命令未加入PATH环境变量;数据库集群字符集初始化完成后不可原地修改,需要重建集群导入备份。


Windows平台运行PostgreSQL适合开发测试场景,生产关键业务优先评估Linux平台部署;无论任何平台,部署完成之后都必须完成备份验证,备份文件要做恢复演练,保证故障时数据可以正常恢复。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9664900/viewspace-3182540/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
风哥Oracle,MySQL,PostgreSQL,Linux,大数据,国产数据库,中间件等教程

注册时间:2010-10-26

  • 博文量
    68
  • 访问量
    406021