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,官方文档是最权威的学习资料。

相关推荐
阿里小阿希17 分钟前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神22 分钟前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员32 分钟前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java41 分钟前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿1 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴1 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU1 小时前
三大范式和E-R图
数据库
一江寒逸1 小时前
零基础从入门到精通MySQL(上篇):筑基篇——吃透核心概念与基础操作,打通SQL入门第一关
数据库·sql·mysql
@土豆1 小时前
Ubuntu 22.04 运行 Filebeat 7.11.2 崩溃问题分析及解决文档
linux·数据库·ubuntu
专注API从业者1 小时前
淘宝商品详情 API 与爬虫技术的边界:合法接入与反爬策略的技术博弈
大数据·数据结构·数据库·爬虫