文章目录
- [📘 PostgreSQL 18 本地部署与运维完全指南 (Windows版)](#📘 PostgreSQL 18 本地部署与运维完全指南 (Windows版))
-
- [📋 第一阶段:下载与初始化安装](#📋 第一阶段:下载与初始化安装)
-
- [1. 下载安装包](#1. 下载安装包)
- [2. 运行安装向导](#2. 运行安装向导)
- [⚙️ 第二阶段:配置环境变量 (可选但推荐)](#⚙️ 第二阶段:配置环境变量 (可选但推荐))
- [🛠️ 第三阶段:注册服务与开机自启 (核心步骤)](#🛠️ 第三阶段:注册服务与开机自启 (核心步骤))
-
- [1. 以管理员身份打开 CMD](#1. 以管理员身份打开 CMD)
- [2. 进入 bin 目录](#2. 进入 bin 目录)
- [3. 注册 Windows 服务](#3. 注册 Windows 服务)
- [4. 设置开机自启并启动服务](#4. 设置开机自启并启动服务)
- [5. 验证状态](#5. 验证状态)
- [🔌 第四阶段:连接测试 (Navicat & 命令行)](#🔌 第四阶段:连接测试 (Navicat & 命令行))
-
- [1. 命令行连接测试](#1. 命令行连接测试)
- [2. Navicat 连接配置](#2. Navicat 连接配置)
- [🆘 第五阶段:常见运维命令速查](#🆘 第五阶段:常见运维命令速查)
- [⚠️ 故障排查 (Troubleshooting)](#⚠️ 故障排查 (Troubleshooting))
-
- [问题 1:Navicat 连接报错 "no pg_hba.conf entry"](#问题 1:Navicat 连接报错 "no pg_hba.conf entry")
- [问题 2:忘记密码](#问题 2:忘记密码)
- [问题 3:服务无法启动](#问题 3:服务无法启动)
- [✅ 部署完成检查清单](#✅ 部署完成检查清单)
📘 PostgreSQL 18 本地部署与运维完全指南 (Windows版)
适用版本 :PostgreSQL 18 (Windows x64)
安装路径 :D:\pgsql
数据目录 :D:\pgsql\data
默认端口 :5432
超级用户 :postgres
预设密码 :123456(生产环境请修改!)
📋 第一阶段:下载与初始化安装
1. 下载安装包
- 访问官网:https://www.postgresql.org/download/windows/
- 下载 PostgreSQL 18 的 Windows 安装程序 (
.exe)。 - 可选 :同时下载 pgAdmin 4 和 Command Line Tools (通常安装包内已包含)。
2. 运行安装向导
双击安装包,按以下步骤操作:
- Installation Directory (安装目录) :
- 点击
Browse,修改为:D:\pgsql - (建议不要安装在 C 盘,避免系统盘空间不足)
- 点击
- Select Components (选择组件) :
- 全选默认即可 (PostgreSQL Server, pgAdmin 4, Command Line Tools, Stack Builder)。
- Data Directory (数据目录) :
- 保持默认 (会自动设为
D:\pgsql\data)。
- 保持默认 (会自动设为
- Password (设置密码) :
- 输入超级用户
postgres的密码:123456 - ⚠️ 重要:请务必记牢此密码,后续所有连接都依赖它。
- 输入超级用户
- Port (端口) :
- 保持默认:
5432。
- 保持默认:
- Locale (区域设置) :
- 保持默认
Default locale(通常对应系统语言)。
- 保持默认
- 完成安装 :
- 取消勾选 "Stack Builder" (除非你需要额外插件),点击
Finish。
- 取消勾选 "Stack Builder" (除非你需要额外插件),点击
⚙️ 第二阶段:配置环境变量 (可选但推荐)
为了能在任意 CMD 窗口直接使用 psql, pg_ctl 等命令,需配置环境变量。
-
右键"此电脑" -> "属性" -> "高级系统设置" -> "环境变量"。
-
在 系统变量 中找到
Path,点击"编辑"。 -
点击"新建",添加路径:
textD:\pgsql\bin -
连续点击"确定"保存。
-
验证 :打开一个新的 CMD 窗口,输入
psql --version,若显示版本号则成功。
🛠️ 第三阶段:注册服务与开机自启 (核心步骤)
默认安装可能未将数据库注册为"自动启动"的 Windows 服务,需手动执行以确保重启后自动运行。
1. 以管理员身份打开 CMD
- 搜索
cmd,右键选择 "以管理员身份运行"。
2. 进入 bin 目录
cmd
cd /d D:\pgsql\bin
3. 注册 Windows 服务
执行以下命令(服务名设为 PostgreSQL-18):
cmd
pg_ctl register -N "PostgreSQL-18" -D "D:\pgsql\data"
- 成功标志 :屏幕显示
Service registered successfully。 - 注:
-N指定服务名,-D指定数据目录。
4. 设置开机自启并启动服务
cmd
:: 设置为自动启动
sc config PostgreSQL-18 start= auto
:: 立即启动服务
net start PostgreSQL-18
- 成功标志 :显示
PostgreSQL-18 服务正在启动 . . . . . PostgreSQL-18 服务已经启动成功。
5. 验证状态
输入以下命令确认状态:
cmd
sc qc PostgreSQL-18
检查输出中是否包含:START_TYPE : 2 AUTO_START 和 STATE : 4 RUNNING。
🔌 第四阶段:连接测试 (Navicat & 命令行)
1. 命令行连接测试
在任意 CMD 窗口输入:
cmd
psql -U postgres -h localhost
- 输入密码:
123456(输入时不显示字符,输完回车)。 - 出现
postgres=#提示符即表示成功。 - 退出输入:
\q
2. Navicat 连接配置
打开 Navicat for PostgreSQL,新建连接:
- 连接名 :
Local_PG - 主机 :
localhost(或127.0.0.1) - 端口 :
5432 - 初始数据库 :
postgres - 用户名 :
postgres - 密码 :
123456 - 点击 "测试连接" ,显示
Connection successful后保存。
🆘 第五阶段:常见运维命令速查
将以下命令保存在备忘录中,日常维护必备。
| 场景 | 命令 (需在管理员 CMD 执行) | 说明 |
|---|---|---|
| 启动服务 | net start PostgreSQL-18 |
手动启动数据库 |
| 停止服务 | net stop PostgreSQL-18 |
手动停止数据库 |
| 重启服务 | net stop PostgreSQL-18 net start PostgreSQL-18 |
修改配置后需重启 |
| 查看状态 | sc query PostgreSQL-18 |
查看是否运行中 |
| 卸载服务 | pg_ctl unregister -N "PostgreSQL-18" -D "D:\pgsql\data" |
慎用:移除开机自启和服务注册 |
| 修改密码 | psql -U postgres -c "ALTER USER postgres WITH PASSWORD '新密码';" |
在 psql 中执行或登录后执行 |
⚠️ 故障排查 (Troubleshooting)
问题 1:Navicat 连接报错 "no pg_hba.conf entry"
原因 :配置文件禁止了 TCP/IP 连接。
解决:
-
编辑文件:
D:\pgsql\data\pg_hba.conf -
在文件末尾添加:
texthost all all 127.0.0.1/32 scram-sha-256 host all all ::1/128 scram-sha-256 -
重启服务 :
net stop PostgreSQL-18&&net start PostgreSQL-18
问题 2:忘记密码
解决:
- 停止服务:
net stop PostgreSQL-18 - 临时修改
D:\pgsql\data\pg_hba.conf,将scram-sha-256改为trust(允许无密码登录)。 - 启动服务:
net start PostgreSQL-18 - 登录并修改密码:
psql -U postgres->ALTER USER postgres WITH PASSWORD '123456'; - 重要 :改回
pg_hba.conf为scram-sha-256并重启服务,恢复安全性。
问题 3:服务无法启动
检查:
- 查看日志文件:
D:\pgsql\data\logfile(或你在注册时指定的日志路径)。 - 检查端口占用:
netstat -ano | findstr 5432,看是否有其他程序占用了 5432 端口。
✅ 部署完成检查清单
在交付或使用前,请确认以下三点:
- 服务
PostgreSQL-18在services.msc中状态为 "正在运行" 且启动类型为 "自动"。 - 能够使用
psql -U postgres在命令行成功登录。 - 能够使用 Navicat 通过
localhost:5432成功连接并看到数据库列表。