PostgreSQL保姆级下载安装指南(win版)

目录

前言

一、前置准备:版本选择与核心说明

[1.1 版本选择建议](#1.1 版本选择建议)

[1.2 核心前置依赖](#1.2 核心前置依赖)

二、分平台标准安装步骤

[2.1 Linux 系统安装(生产环境首选)](#2.1 Linux 系统安装(生产环境首选))

[2.1.1 Debian/Ubuntu 系列(Ubuntu 20.04/22.04/24.04、Debian 11/12)](#2.1.1 Debian/Ubuntu 系列(Ubuntu 20.04/22.04/24.04、Debian 11/12))

[2.1.2 RHEL/CentOS/Rocky Linux/AlmaLinux 系列](#2.1.2 RHEL/CentOS/Rocky Linux/AlmaLinux 系列)

[2.2 Windows 系统安装(本地开发首选)](#2.2 Windows 系统安装(本地开发首选))

[2.3 macOS 系统安装(开发者首选)](#2.3 macOS 系统安装(开发者首选))

[2.3.1 Homebrew 安装(推荐)](#2.3.1 Homebrew 安装(推荐))

[2.3.2 官方 DMG 包安装](#2.3.2 官方 DMG 包安装)

三、安装后核心配置

[3.1 核心配置文件说明](#3.1 核心配置文件说明)

[3.2 重置超级用户密码](#3.2 重置超级用户密码)

[3.3 配置远程访问](#3.3 配置远程访问)

[步骤 1:修改监听地址](#步骤 1:修改监听地址)

[步骤 2:配置客户端访问规则](#步骤 2:配置客户端访问规则)

[步骤 3:重启服务生效](#步骤 3:重启服务生效)

[步骤 4:放行防火墙与安全组](#步骤 4:放行防火墙与安全组)

[3.4 基础性能优化](#3.4 基础性能优化)

四、高频踩坑与排障指南

[4.1 远程连接失败,排查步骤](#4.1 远程连接失败,排查步骤)

[4.2 密码认证失败](#4.2 密码认证失败)

[4.3 服务启动失败](#4.3 服务启动失败)

[4.4 初始化数据库失败](#4.4 初始化数据库失败)

五、生产环境最佳实践

End


前言

作为全球最先进的开源关系型数据库,PostgreSQL(简称 PG)凭借完全兼容 ACID、强大的扩展能力、对 JSON / 地理信息 / 时序数据的原生支持,以及零成本的开源协议,成为个人开发者、中小企业乃至大型企业的数据库首选。

本文所有命令与配置均基于 PostgreSQL 最新版本验证,兼容 14 + 以上主流版本。

一、前置准备:版本选择与核心说明

https://www.postgresql.org/https://www.postgresql.org/

1.1 版本选择建议

PostgreSQL 全球开发组每年发布一个大版本,每个大版本提供 5 年官方安全与 bug 修复支持,生产环境优先选择稳定 长期支持 版本,避免 Beta 版与即将停止维护(EOL)的版本。

|-------|----------------------|-----------------------|
| 版本类型 | 推荐选择 | 适用场景 |
| 生产环境 | PostgreSQL 17.x/16.x | 稳定性优先,官方支持周期长,企业级业务首选 |
| 学习测试 | 最新稳定版 | 体验新特性,适配个人项目、课程学习 |
| 老项目兼容 | 项目适配的最低 LTS 版本 | 避免版本差异导致的语法、驱动兼容性问题 |

避坑提醒:不要直接使用 Linux 系统自带的 PostgreSQL 版本,系统内置源的版本通常严重滞后(比如 CentOS 7 默认仅提供 9.2 版本),存在大量已知安全漏洞与功能缺失,务必使用官方源安装。

1.2 核心前置依赖

  • Linux:需 root 或 sudo 权限,确保系统能访问官方软件源

  • Windows:Windows 10/11、Windows Server 2016+,管理员权限

  • macOS:macOS 12+,推荐安装 Homebrew 包管理器

二、分平台标准安装步骤

2.1 Linux 系统安装(生产环境首选)

Linux 是 PostgreSQL 生产环境的主流部署平台,本文覆盖 Debian/Ubuntu、RHEL/CentOS/Rocky Linux 两大主流发行版,均采用官方源安装,保证版本最新、安全合规。

2.1.1 Debian/Ubuntu 系列(Ubuntu 20.04/22.04/24.04、Debian 11/12)

1.更新系统并安装基础依赖

复制代码
sudo apt update && sudo apt install -y ca-certificates gnupg2 wget lsb-release

2.导入官方 GPG 密钥,添加官方软件源

复制代码
# 导入PG官方GPG密钥
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
# 添加官方源
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

3.安装 PostgreSQL 服务器与客户端

复制代码
sudo apt update
# 安装最新稳定版,如需指定版本,将postgresql改为postgresql-17即可
sudo apt install -y postgresql postgresql-contrib

4.验证安装与服务状态

复制代码
# 查看服务状态,安装完成后会自动启动并设置开机自启
sudo systemctl status postgresql
# 查看已安装的版本
psql --version

说明:Debian/Ubuntu 安装完成后,会自动创建postgres系统用户、默认数据库实例,数据目录默认位于/var/lib/postgresql/<版本号>/main

2.1.2 RHEL/CentOS/Rocky Linux/AlmaLinux 系列

1.安装官方仓库 RPM

复制代码
# 以Rocky Linux 9/CentOS 9为例,其他版本替换对应版本号即可
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# CentOS 7 请使用以下命令
# sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2.安装 PostgreSQL 服务器与客户端

复制代码
# 安装最新稳定版,如需指定版本,改为postgresql18-server即可
sudo dnf install -y postgresql-server postgresql-contrib
# CentOS 7 请使用 yum 替代 dnf

3.手动初始化数据库实例

关键区别:RHEL 系列安装完成后不会自动初始化实例,必须手动执行初始化命令

复制代码
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb

4.启用并启动服务

bash 复制代码
# 设置开机自启
sudo systemctl enable --now postgresql-17
# 查看服务状态
sudo systemctl status postgresql-17
# 验证版本
psql --version

2.2 Windows 系统安装(本地开发首选)

Windows 平台推荐使用 EnterpriseDB 提供的官方图形化安装包,一键完成安装、配置与工具集成,无需手动处理环境变量。

1.下载官方安装包 访问PostgreSQL 官方下载页,选择对应系统架构的最新稳定版安装包,下载后以管理员 身份 运行安装程序。

2.图形化安装步骤

1.选择安装版本;

2.选择安装目录,避坑提醒:不要使用包含中文、空格、特殊字符的路径 ,推荐默认路径C:\Program Files\PostgreSQL\<版本号>

3.选择安装组件,默认全选即可(包含 PostgreSQL Server、pgAdmin4 图形化管理工具、Stack Builder 扩展管理器、命令行工具);

4.选择数据目录,建议与安装目录分盘存放,避免系统盘故障导致数据丢失;

5.设置超级用户postgres的密码,务必设置强密码,牢记该密码,后续登录必须使用;

6.设置数据库端口,默认 5432,无特殊需求无需修改,如需修改请确保端口未被占用;

7.设置数据库默认 locale,推荐选择Chinese (Simplified, China)或默认Default locale,点击下一步完成安装。

点击取消,后续是引导下载第三方配置的,可以先不下载,以后用到再下。

8**.验证安装** 安装完成后,可通过开始菜单打开pgAdmin4图形化工具,或打开SQL Shell (psql),输入密码后成功登录即代表安装完成。

点击add new Server,或者使用postgres管理员的也可以。

可以看到是可以正常使用的,不想用这种可视化界面的,可以使用navicat或者datagrip工具。

2.3 macOS 系统安装(开发者首选)

macOS 平台有两种主流安装方式,优先推荐 Homebrew 安装,操作简单、便于版本管理。

2.3.1 Homebrew 安装(推荐)

1.若未安装 Homebrew,先执行以下命令安装 Homebrew:

bash 复制代码
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2.安装 PostgreSQL:

bash 复制代码
# 安装最新稳定版
brew install postgresql
# 如需指定版本,使用 brew install postgresql@17

3.启动服务并设置开机自启:

bash 复制代码
brew services start postgresql
# 查看服务状态
brew services list

4.验证安装:

bash 复制代码
psql --version
# 直接登录默认数据库
psql postgres

2.3.2 官方 DMG 包安装

如需图形化安装,可访问PostgreSQL 官方 macOS 下载页,下载官方 DMG 安装包,按照向导完成安装,步骤与 Windows 图形化安装一致,安装完成后会自动集成 pgAdmin4 管理工具。

三、安装后核心配置

安装完成仅代表程序部署完成,想要正常使用、尤其是开放远程访问,必须完成以下核心配置,所有配置均适配全平台,仅配置文件路径有差异。

3.1 核心配置文件说明

PostgreSQL 的所有核心配置都集中在两个文件中,修改后必须重启服务才能生效:

  • postgresql.conf:数据库主配置文件,控制监听地址、端口、内存、日志等全局配置

  • pg_hba.conf:客户端访问控制配置文件,控制哪些 IP、用户可以访问数据库,以及认证方式

配置文件默认路径:

  • Linux Debian/Ubuntu:/etc/postgresql/<版本号>/main/

  • Linux RHEL/CentOS:/var/lib/pgsql/<版本号>/data/

  • Windows:安装目录/data/

  • macOS Homebrew:/opt/homebrew/var/postgresql@<版本号>/

3.2 重置超级用户密码

安装完成后,默认postgres数据库超级用户的密码未强制设置,生产环境必须先重置强密码:

1.切换到postgres系统用户(Linux/macOS):

bash 复制代码
sudo su - postgres

2.登录 psql 命令行客户端:

bash 复制代码
psql

3.执行 SQL 命令重置密码:

bash 复制代码
-- 替换为你的强密码,建议包含大小写、数字、特殊字符,长度不少于8位
ALTER USER postgres WITH PASSWORD 'YourPassword@2026';

4.退出 psql:

bash 复制代码
\q

3.3 配置远程访问

默认情况下,PostgreSQL 仅允许本地(127.0.0.1)访问,如需远程连接(比如应用服务器、本地开发工具连接服务器数据库),需完成以下配置:

步骤 1:修改监听地址

编辑postgresql.conf文件,找到listen_addresses配置项,修改为:

bash 复制代码
# 允许所有IP访问,生产环境建议替换为指定的IP段,比如192.168.1.0/24,多个地址用逗号分隔
listen_addresses = '*'
# 可选:修改默认端口,生产环境建议修改,降低被扫描的风险
port = 5432

步骤 2:配置客户端访问规则

编辑pg_hba.conf文件,在文件末尾添加访问规则,推荐配置如下:

bash 复制代码
# 格式:TYPE  DATABASE  USER  ADDRESS  METHOD
# 允许所有用户、所有IP访问所有数据库,使用scram-sha-256加密认证
host  all  all  0.0.0.0/0  scram-sha-256
# 生产环境推荐最小权限配置,仅允许指定IP的应用用户访问指定数据库
# host  your_db  your_user  192.168.1.10/32  scram-sha-256

安全说明:scram-sha-256是 PostgreSQL 10 + 默认的加密认证方式,安全性远高于老旧的 md5,严禁使用 trust 无密码认证方式。

步骤 3:重启服务生效

bash 复制代码
# Linux Debian/Ubuntu
sudo systemctl restart postgresql
# Linux RHEL/CentOS
sudo systemctl restart postgresql-17
# macOS Homebrew
brew services restart postgresql
# Windows:服务面板重启PostgreSQL服务

步骤 4:放行防火墙与安全组

远程连接失败 90% 是因为防火墙未放行:

1.Linux 防火墙放行

bash 复制代码
# Debian/Ubuntu ufw防火墙
sudo ufw allow 5432/tcp
sudo ufw reload
# RHEL/CentOS firewalld防火墙
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

2.Windows 防火墙:打开控制面板 -> 系统和安全 ->Windows Defender 防火墙 -> 高级设置,添加入站规则,放行 5432 端口。

3.云服务器:务必在云服务商控制台的安全组 / 网络 ACL 中,放行 5432 端口的入站流量。

3.4 基础性能优化

默认配置仅适配低配置环境,生产环境需根据服务器硬件调整核心参数,以下为通用优化建议,适用于专用数据库服务器:编辑postgresql.conf文件,修改以下核心参数:

bash 复制代码
# 共享缓冲区,推荐设置为系统内存的25%,比如32G内存设置为8GB
shared_buffers = 8GB
# 单个操作的工作内存,根据并发数调整,推荐设置为系统内存的4% / 最大并发数
work_mem = 64MB
# 维护操作内存,比如建索引、VACUUM,推荐设置为系统内存的10%,最大不超过4GB
maintenance_work_mem = 2GB
# 优化器缓存大小,推荐设置为系统内存的75%,告诉优化器系统有多少内存可用
effective_cache_size = 24GB
# 开启WAL归档,用于备份恢复,生产环境必须开启
wal_level = replica
# 开启自动清理,避免表膨胀,默认开启,请勿关闭
autovacuum = on

四、高频踩坑与排障指南

4.1 远程连接失败,排查步骤

  1. 先检查服务是否正常启动:systemctl status postgresql,确保服务处于 running 状态;

  2. 检查listen_addresses是否配置正确,重启服务后生效;

  3. 检查pg_hba.conf的认证规则是否正确,认证方式是否为scram-sha-256

  4. telnet 服务器IP 5432测试端口是否通,不通则排查防火墙、安全组是否放行;

  5. CentOS/RHEL 系统检查 SELinux 是否拦截,可临时关闭setenforce 0测试,如需长期使用需配置 SELinux 规则。

4.2 密码认证失败

  1. 确认密码输入正确,区分大小写;

  2. 检查pg_hba.conf的认证方式,若使用scram-sha-256,需确保密码是用该方式加密的,重置密码即可解决;

  3. 确认登录的用户名正确,默认超级用户是postgres,不是系统 root 用户。

4.3 服务启动失败

  1. Linux:检查数据目录权限,必须为postgres用户所有,权限为 700,执行chown -R postgres:postgres 数据目录 && chmod 700 数据目录修复;

  2. Windows:检查数据目录是否有中文、空格,确保 postgres 服务用户有数据目录的读写权限;

  3. 检查端口是否被其他程序占用,修改postgresql.conf的 port 参数更换端口。

4.4 初始化数据库失败

核心原因是数据目录权限不足或目录非空,确保数据目录为空,且归属 postgres 用户,权限设置正确。


五、生产环境最佳实践

  1. 安全加固优先

    1. 禁止 postgres 超级用户远程登录,仅本地使用;

    2. 遵循最小权限原则,给应用用户仅分配业务所需的权限,严禁授予 superuser 权限;

    3. 定期修改密码,开启密码复杂度策略,关闭不必要的扩展;

    4. 生产环境严禁使用 0.0.0.0/0 全 IP 放行,仅允许业务服务器 IP 段访问。

  2. 数据安全保障

    1. 数据目录与系统盘分盘存放,避免系统盘占满导致数据库宕机、数据损坏;

    2. 配置定时全量备份 + WAL 增量备份,定期执行备份恢复测试,确保备份可用;

    3. 核心业务开启主从复制,避免单点故障,保障业务连续性。

  3. 性能与稳定性优化

    1. 根据服务器硬件、业务场景定制优化内核参数与数据库配置;

    2. 配置合理的日志策略,开启慢查询日志,定期排查性能问题;

    3. 定期执行 VACUUM ANALYZE,避免表膨胀,保证统计信息准确;

    4. 搭建监控体系(Prometheus+Grafana),实时监控连接数、QPS、内存、磁盘、延迟等核心指标。


End

PostgreSQL 的安装本身并不复杂,真正决定数据库稳定性与安全性的,是安装后的配置规范与最佳实践落地。

如果想要深入学习 PostgreSQL,官方文档是最权威的学习资料。

相关推荐
写代码的小阿帆1 小时前
MySQL多表联查——内连、外连
数据库·mysql
九章-1 小时前
金仓数据库迁移工具链:Oracle平滑迁移的技术实践
数据库·oracle·数据库迁移工具·oracle迁移工具
逍遥德1 小时前
Postgresql explain执行计划详解
数据库·后端·sql·postgresql·数据分析
海山数据库1 小时前
移动云大云海山数据库(He3DB)与PolarDB架构深度对比(一)
数据库·架构·he3db·大云海山数据库·移动云数据库
dapeng28701 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
TG_yunshuguoji1 小时前
阿里云代理商:怎么创建和连接RDS云数据库?
数据库·阿里云·云计算
小陳参上2 小时前
持久化数据库实现:确保数据持久性与可靠性
java·jvm·数据库
不是株2 小时前
Redis(实战篇)
数据库·redis·缓存
Anastasiozzzz2 小时前
放弃原生 C 语言字符串:深度解析 Redis SDS 的设计艺术
数据库·redis·缓存