安装 PostgreSQL(Win/macOS/Linux)
本教程共 50 篇 · 第 2 篇 · 更新于 2026-07-31 · 约 8 分钟阅读
2. 安装 PostgreSQL(Win/macOS/Linux)
本节目标:学完你能在自己电脑上装好 PostgreSQL 18,并确认它能正常启动、能连得进去。
装数据库是第一步,也是最容易卡住新手的一步。别担心,我按平台分开讲,你照着自己系统走就行。本书全程以 PostgreSQL 18(18.4)为准。
Note安装包从官网 https://www.postgresql.org/download/ 获取。Windows 和 macOS 桌面用户推荐用 EnterpriseDB 出的图形安装包,一路点下一步最省事。Linux 用户用系统包管理器更顺手。
安装前先弄清几个概念
动手之前,先分清三个东西,免得后面迷糊:
- 服务器(Server):真正存数据、处理查询的后台进程。你平时看不见它,它在后台跑。
- 客户端(Client):你用来连服务器的工具,比如 psql(命令行)和 pgAdmin(图形)。
- 数据目录(Data Directory):服务器把数据库文件存到硬盘上的那个文件夹。
安装时你其实是在装「服务器 + 客户端 + 一套默认配置」。装完之后,客户端连本机的服务器,就能开始干活了。
通用流程
不管哪个系统,安装基本都这三步:
- 下载对应平台的安装包。
- 运行安装,设置超级用户(postgres)密码和端口。
- 验证能连上数据库。
端口默认是 5432,除非被占用,否则不要改。超级用户密码请务必记牢,后面连接都要用。
Warningpostgres 这个超级用户权限极大,能删库、能改系统设置。它的密码别设得太简单,更别写进会公开分享的代码里。
Windows 安装
- 打开官网下载页,选 Windows,下载 x86-64 安装包。
- 双击运行,点 Next。
- 选择安装目录,组件全部勾上即可。
- 设置数据目录(用默认就行)。
- 设置超级用户
postgres的密码。 - 端口保持
5432默认。 - 区域(Locale)用默认,点 Next 开始安装,结束点 Finish。
安装完后,开始菜单里会出现两样东西:SQL Shell (psql) 和 pgAdmin 4。前者是命令行,后者是图形界面,后面两章都会讲。
Tip想在任何命令行直接敲
psql,可以把安装目录下的bin文件夹加进系统 PATH。路径类似C:\Program Files\PostgreSQL\18\bin。加好后在命令提示符里运行psql --version能显示版本即成功。
Windows 上的另一种选择是用 Chocolatey 或 Winget 这类包管理器,但新手用图形安装包最稳,不推荐折腾命令行装。
macOS 安装
macOS 有两种常见装法。
方式一:EnterpriseDB 安装包。 下载 .dmg 文件双击,按向导填密码、端口等,一路默认即可。
方式二:Homebrew(推荐给开发者)。 如果你装了 Homebrew,一行命令搞定:
brew install postgresql@18
装完用 brew 启动服务:
brew services start postgresql@18
如果想只在当前终端临时跑、不开机自启,可以用:
pg_ctl -D /opt/homebrew/var/postgresql@18 start
NoteApple 芯片(M1/M2/M3)的 Homebrew 目录通常是
/opt/homebrew,Intel 芯片是/usr/local。如果上面的路径不对,用brew info postgresql@18查一下它告诉你数据目录在哪。
Linux 安装
以 Ubuntu 为例,用 apt 直接装:
sudo apt-get update
sudo apt-get install postgresql postgresql-client
安装过程中系统会自动创建一个名为 postgres 的超级用户,初始密码为空。你不用自己设,后面用 sudo -i -u postgres 切换过去即可。
Note在 Linux 上,Postgres 装好后会自动创建一个操作系统用户
postgres。数据库里的超级用户也叫postgres,两者名字一样但不是一回事:一个是系统账号,一个是数据库账号。这是 Linux 上最容易混淆的一点。
CentOS / Rocky / RHEL 这类系统用 dnf:
sudo dnf install postgresql-server postgresql
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
Tip不同 Linux 发行版自带的 Postgres 版本可能偏旧。想要最新的 18,可以去官网找对应发行版的官方仓库源,比系统默认源更新更及时。
服务启停
装好之后,数据库服务(后台进程)需要是运行状态你才能连。
Linux(apt 安装):
sudo /etc/init.d/postgresql start # 启动
sudo /etc/init.d/postgresql stop # 停止
sudo /etc/init.d/postgresql restart # 重启
较新的 Ubuntu 也支持 systemctl:
sudo systemctl start postgresql
sudo systemctl stop postgresql
macOS(brew 安装):
brew services start postgresql@18
brew services stop postgresql@18
Windows: 安装时默认已注册为系统服务并自动启动。可在「服务」管理里启动/停止 postgresql-x64-18。
初始化数据目录
如果你是从源码安装,或者需要手动建数据目录,要用 initdb 命令。大多数桌面安装包已经帮你初始化好了,这步可跳过。手动初始化的样子是这样的:
initdb -D /path/to/data_directory
-D 指定数据文件存放的位置。这个目录一旦初始化,就装着你所有的数据库文件了。
Warning数据目录权限要求很严,必须属于运行 Postgres 的那个系统用户,且其他用户不能访问。用
initdb时它也会检查并提醒你。千万不要用 root 去初始化,否则服务器会拒绝启动。
验证安装
最简单的方法,用 psql 连上执行一条 SQL:
SELECT version();
正常会返回类似下面的信息,能看到版本号就说明装好了:
version
------------------------------------------------------------------------------
PostgreSQL 18.4 on x86_64-pc-linux-gnu, compiled by gcc, 64-bit
(1 row)
也可以只看客户端版本:
psql --version
显示 psql (PostgreSQL) 18.4 即正确。
再验一下服务端口在不在监听:
# Linux / macOS
ss -nlt | grep 5432
# Windows PowerShell
netstat -an | findstr 5432
能看到 5432 端口处于 LISTEN 状态,就说明服务器确实在跑了。
Tip连不上的常见原因:服务没启动、端口被改、密码记错。先确认服务在跑,再核对端口和密码,基本都能解决。
确认装的是 18 而不是旧版
有时候系统里已经有个老版本 Postgres,你装了 18 却连的还是老的。验一下:
psql --version
如果显示不是 18.x,说明 PATH 里排在前面的还是旧版。Windows 上调整 PATH 顺序,macOS/Linux 上用 which psql 看它指向哪,确认路径对得上。
Tip一台机器可以同时装多个大版本的 Postgres,它们用不同端口区分(比如 5432、5433)。连的时候用
-p指定端口,就不会连错版本。
安装后的目录大致长什么样
不用死记,有个印象即可:
bin/:psql、pg_ctl、initdb 等可执行程序所在地。data/:数据目录,所有库文件都在这,备份和迁移都围绕它。lib/:运行依赖的动态库。
记住 data/ 最重要。哪天要搬家、做备份,拷的就是它(当然要在服务停掉时拷)。
常见安装卡点
我把新手最容易卡的地方列出来,对号入座:
- 安装到最后一步卡住:多半是杀毒软件拦截,或装到了带中文/空格的路径。关掉杀软、改用默认英文路径重试。
- Windows 提示「另一个程序在使用」:可能旧版没卸干净,先卸载旧版再装。
- macOS 提示「无法打开,因为来自身份不明的开发者」:去系统设置 → 隐私与安全性,点「仍要打开」。
- Linux 包管理器装完连不上:多半是服务没自动起,用上面的启停命令手动拉起。
- 端口 5432 被占用:换端口最省事,连接时记得也用新端口。
想干净重来怎么办
如果装坏了想重装,Windows/macOS 从控制面板或应用程序里卸载即可;Linux 用包管理器卸载并删掉数据目录:
sudo apt-get remove --purge postgresql postgresql-client
sudo rm -rf /var/lib/postgresql /etc/postgresql
Warning删数据目录等于删掉所有库,重装前确认里面没有要保留的数据。新手练习环境随意,生产环境绝不可这么干。
下一章我们正式认识命令行客户端 psql,学会怎么连进去。