PostgreSQL: 如何安装PostgreSQL并完成首次连接
最后更新:2026-08-26
安装 PostgreSQL 并完成首次连接是学习的第一步——本文将带你用最快的方式跑起来一个 PG 实例。
1. 你将学到
- Windows / macOS / Linux 原生安装 PostgreSQL
- Docker 安装(推荐开发环境)
- pgAdmin 4 和 DBeaver 图形化管理工具安装
- psql 命令行连接与基本操作
- 服务启停与连接参数配置
2. 一个新入职开发者的真实故事
(1) 痛点:30 分钟内必须跑起来数据库
Bob 刚入职一家电商公司,经理要求他在 30 分钟内搭建好本地开发环境的 PostgreSQL 数据库。Bob 之前只用过 MySQL,对 PG 完全陌生:
- 不确定该下载哪个版本
- 不知道安装后怎么验证是否成功
- 听说还要装图形化管理工具,选 pgAdmin 还是 DBeaver?
(2) Docker + DBeaver 的解法
用 Docker 安装 PostgreSQL 是最快的方式——一条命令搞定,无需处理系统差异:
BASH
# Pull and run PostgreSQL 17 in Docker
docker run --name my-postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_USER=bob \
-e POSTGRES_DB=dev_shop \
-p 5432:5432 \
-d postgres:17
# Verify the container is running
docker ps | grep my-postgres
(3) 收益
- 2 分钟完成安装(vs 原生安装 10-15 分钟)
- 环境一致(开发/测试/生产配置可复用)
- 一条命令销毁重建,不怕搞坏环境
3. 安装方式对比
| 方式 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| Docker | 快速、干净、可复现、可一键销毁 | 需先安装 Docker | 开发环境(推荐) |
| Windows 安装包 | 图形化安装、系统服务自动注册 | 卸载不干净、版本管理难 | Windows 开发者 |
| macOS Homebrew | 命令行安装、版本切换方便 | 需熟悉 Homebrew | macOS 开发者 |
| Linux 包管理器 | 原生集成、性能最优 | 不同发行版命令不同 | Linux 服务器/开发 |
| 云服务 | 零运维、自动备份 | 有费用、网络延迟 | 生产环境 |
graph TB
START[Choose installation method] --> Q1{Need production<br/>performance?}
Q1 -->|Yes| NAT[Native install<br/>Linux package manager]
Q1 -->|No| Q2{Already have<br/>Docker?}
Q2 -->|Yes| DOCKER[Docker install<br/>2 minutes]
Q2 -->|No| Q3{Your OS?}
Q3 -->|Windows| WIN[Windows installer<br/>EDB download]
Q3 -->|macOS| BREW[Homebrew install<br/>brew install postgresql@17]
Q3 -->|Linux| APT[APT/YUM install<br/>postgresql-17]
4. Docker 安装(推荐)
(1) 安装步骤
▶ 示例:Docker 安装 PostgreSQL 17
BASH
# Step 1: Pull PostgreSQL 17 image
docker pull postgres:17
# Step 2: Run container with custom settings
docker run --name pg-dev \
-e POSTGRES_USER=devuser \
-e POSTGRES_PASSWORD=devpass123 \
-e POSTGRES_DB=shopdb \
-p 5432:5432 \
-v pgdata:/var/lib/postgresql/data \
-d postgres:17
# Step 3: Verify container is running
docker ps
# Step 4: Connect via psql inside container
docker exec -it pg-dev psql -U devuser -d shopdb
输出:
TEXT
📖 仅展示
psql (17.0)
Type "help" for help.
shopdb=>
(2) 常用 Docker 管理命令
| 操作 | 命令 |
|---|---|
| 启动容器 | docker start pg-dev |
| 停止容器 | docker stop pg-dev |
| 重启容器 | docker restart pg-dev |
| 删除容器 | docker rm -f pg-dev |
| 查看日志 | docker logs pg-dev |
| 进入 psql | docker exec -it pg-dev psql -U devuser -d shopdb |
💡 提示:
-v pgdata:/var/lib/postgresql/data 将数据持久化到 Docker volume,容器删除后数据不丢失。
5. 原生安装
(1) Windows 安装
▶ 示例:Windows 安装步骤
TEXT
📖 仅展示
1. Download installer from https://www.enterprisedb.com/downloads/postgres
2. Run postgresql-17-windows-x64.exe
3. Select installation directory (default: C:\Program Files\PostgreSQL\17)
4. Set superuser (postgres) password
5. Set port (default: 5432)
6. Select locale (default: [Default locale])
7. Check "Launch Stack Builder at exit" (optional, for additional tools)
8. Click Finish
安装完成后,PostgreSQL 会自动注册为 Windows 服务并启动。
(2) macOS Homebrew 安装
▶ 示例:macOS 安装步骤
BASH
# Install PostgreSQL 17 via Homebrew
brew install postgresql@17
# Start PostgreSQL service
brew services start postgresql@17
# Connect to default database
psql postgres
# Verify version
SELECT version();
输出:
TEXT
📖 仅展示
# psql 命令执行成功
(3) Linux 安装
▶ 示例:Ubuntu/Debian 安装步骤
BASH
# Add PostgreSQL official APT repository
sudo apt update
sudo apt install -y curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc \
--fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] \
https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
> /etc/apt/sources.list.d/pgdg.list'
# Install PostgreSQL 17
sudo apt update
sudo apt install -y postgresql-17
# Switch to postgres user and connect
sudo -u postgres psql
# Verify installation
SELECT version();
输出:
TEXT
📖 仅展示
# psql 命令执行成功
| 发行版 | 安装命令 | 服务管理 |
|---|---|---|
| Ubuntu/Debian | sudo apt install postgresql-17 |
sudo systemctl start/stop/restart postgresql |
| RHEL/CentOS | sudo dnf install postgresql-server |
sudo systemctl start/stop/restart postgresql |
| Arch Linux | sudo pacman -S postgresql |
sudo systemctl start/stop/restart postgresql |
6. 图形化管理工具
(1) pgAdmin 4 vs DBeaver
| 维度 | pgAdmin 4 | DBeaver |
|---|---|---|
| 定位 | PostgreSQL 官方管理工具 | 通用数据库管理工具 |
| 支持数据库 | 仅 PostgreSQL | PostgreSQL + MySQL + SQLite + Oracle 等 20+ |
| 费用 | 免费 | 社区版免费 / 企业版付费 |
| 平台 | Web 浏览器 + 桌面版 | Windows / macOS / Linux 桌面版 |
| PG 特色支持 | 最佳(原生支持所有 PG 特性) | 良好(支持常用特性) |
| 推荐场景 | PG 专用项目、需要 PG 特色功能 | 多数据库环境、日常开发调试 |
💡 提示: 推荐两个都装——pgAdmin 用于 PG 专项操作(如查看执行计划、管理扩展),DBeaver 用于日常 SQL 开发和数据浏览。
(2) pgAdmin 4 安装
▶ 示例:pgAdmin 4 连接数据库
TEXT
📖 仅展示
1. Download from https://www.pgadmin.org/download/
2. Install and launch pgAdmin 4
3. Click "Add New Server"
4. General tab: Name = "Local Dev"
5. Connection tab:
- Host: localhost (or 127.0.0.1)
- Port: 5432
- Maintenance database: shopdb
- Username: devuser
- Password: devpass123
6. Click Save
(3) DBeaver 安装
▶ 示例:DBeaver 连接 PostgreSQL
TEXT
📖 仅展示
1. Download from https://dbeaver.io/download/ (Community Edition)
2. Install and launch DBeaver
3. Click "New Database Connection" (plug icon)
4. Select PostgreSQL
5. Fill connection settings:
- Host: localhost
- Port: 5432
- Database: shopdb
- Username: devuser
- Password: devpass123
6. Click "Test Connection" (will prompt to download PG JDBC driver)
7. Click Finish
7. psql 命令行连接
psql 是 PostgreSQL 自带的命令行客户端,是最常用的交互式工具。
(1) 连接参数
| 参数 | 缩写 | 默认值 | 说明 |
|---|---|---|---|
--host |
-h |
localhost | 数据库服务器地址 |
--port |
-p |
5432 | 端口号 |
--username |
-U |
当前系统用户 | 连接用户名 |
--dbname |
-d |
与用户名相同 | 连接的数据库名 |
--password |
-W |
无 | 强制提示输入密码 |
▶ 示例:psql 连接数据库
BASH
# Connect to local PostgreSQL
psql -h localhost -p 5432 -U devuser -d shopdb
# Or use connection URI
psql "postgresql://devuser:devpass123@localhost:5432/shopdb"
# Or via Docker
docker exec -it pg-dev psql -U devuser -d shopdb
输出:
TEXT
📖 仅展示
CONTAINER ID IMAGE STATUS
abc123 latest Up 2 hours
(2) psql 常用元命令
psql 的元命令以 \ 开头,无需分号结尾:
| 命令 | 功能 | 示例 |
|---|---|---|
\l |
列出所有数据库 | \l |
\c dbname |
切换数据库 | \c shopdb |
\dt |
列出当前数据库的表 | \dt |
\d tablename |
查看表结构 | \d users |
\du |
列出所有用户/角色 | \du |
\df |
列出所有函数 | \df |
\dx |
列出已安装扩展 | \dx |
\conninfo |
显示当前连接信息 | \conninfo |
\q |
退出 psql | \q |
\? |
帮助(所有元命令) | \? |
▶ 示例:psql 基本操作
SQL
-- Check connection info
\conninfo
-- List databases
\l
-- Create a test table
CREATE TABLE test_greeting (
id SERIAL PRIMARY KEY,
message TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
-- Insert data
INSERT INTO test_greeting (message) VALUES ('Hello, PostgreSQL!');
-- Query data
SELECT * FROM test_greeting;
-- Drop test table
DROP TABLE test_greeting;
输出:
TEXT
📖 仅展示
-- \conninfo output:
You are connected to database "shopdb" as user "devuser" on host "localhost" at port "5432".
-- SELECT output:
id | message | created_at
----+--------------------+----------------------------
1 | Hello, PostgreSQL! | 2026-07-13 10:30:00.123456
8. 服务启停
| 环境 | 启动 | 停止 | 重启 | 状态 |
|---|---|---|---|---|
| Docker | docker start pg-dev |
docker stop pg-dev |
docker restart pg-dev |
docker ps |
| Linux (systemd) | sudo systemctl start postgresql |
sudo systemctl stop postgresql |
sudo systemctl restart postgresql |
sudo systemctl status postgresql |
| macOS (Homebrew) | brew services start postgresql@17 |
brew services stop postgresql@17 |
brew services restart postgresql@17 |
brew services list |
| Windows | 服务自动启动 | net stop postgresql-x64-17 |
net stop then net start |
服务管理器查看 |
9. 完整示例:从安装到验证
BASH
# ============================================
# Complete workflow: install, connect, verify
# From zero to running in 5 commands
# ============================================
# 1. Start PostgreSQL via Docker
docker run --name pg-dev \
-e POSTGRES_USER=devuser \
-e POSTGRES_PASSWORD=devpass123 \
-e POSTGRES_DB=shopdb \
-p 5432:5432 \
-d postgres:17
# 2. Wait for container to be ready (about 5 seconds)
sleep 5
# 3. Connect via psql
docker exec -it pg-dev psql -U devuser -d shopdb
# 4. Inside psql: run verification queries
# (Type these commands in the psql prompt)
-- Show PostgreSQL version
SELECT version();
-- Show current connection
\conninfo
-- List available extensions
SELECT name, default_version FROM pg_available_extensions LIMIT 5;
-- Create a test table and insert data
CREATE TABLE hello_pg (
id SERIAL PRIMARY KEY,
greeting TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
INSERT INTO hello_pg (greeting) VALUES
('Hello from PostgreSQL!'),
('Docker install works!'),
('Ready to learn!');
-- Verify
SELECT * FROM hello_pg;
-- Clean up
DROP TABLE hello_pg;
-- Exit psql
\q
# 5. Stop container when done
docker stop pg-dev
输出(节选):
TEXT
📖 仅展示
version
-----------------------------------------------------------------------------------------------------------------
PostgreSQL 17.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
name | default_version
---------------+-----------------
plpgsql | 1.0
uuid-ossp | 1.1
pg_trgm | 1.6
id | greeting | created_at
----+-----------------------+-------------------------------
1 | Hello from PostgreSQL! | 2026-07-13 10:30:00+00
2 | Docker install works! | 2026-07-13 10:30:00+00
3 | Ready to learn! | 2026-07-13 10:30:00+00
❓ 常见问题
Q Docker 安装的 PostgreSQL 和原生安装有什么区别?
A 功能完全一样。区别只在运行方式:Docker 是容器隔离运行,原生是直接安装在操作系统上。开发环境推荐 Docker(干净、可复现),生产环境推荐原生安装(性能最优、无 Docker 开销)。
Q 安装后如何确认 PostgreSQL 正在运行?
A 最简单的方式是运行
psql -U postgres -c "SELECT 1"。如果返回 1,说明 PG 正在运行且可以连接。Docker 环境用 docker ps | grep postgres 检查容器状态。Q 忘记 postgres 用户密码怎么办?
A 修改
pg_hba.conf 将认证方式临时改为 trust(无需密码),重启 PG 后用 ALTER USER postgres PASSWORD 'new_password' 重设密码,再改回 md5 或 scram-sha-256 认证。Q 端口 5432 被占用怎么办?
A 用
lsof -i :5432(macOS/Linux)或 netstat -ano | findstr 5432(Windows)查看占用进程。可以选择:停掉占用进程,或修改 PG 端口(在 postgresql.conf 中改 port = 5433)。Q pgAdmin 打开很慢怎么办?
A pgAdmin 4 是 Web 应用,首次启动需要加载浏览器引擎,可能需要 10-30 秒。如果持续慢,可以改用 Desktop 模式或换用 DBeaver(启动更快)。
Q 为什么推荐 DBeaver 而不是只用 pgAdmin?
A DBeaver 启动更快、支持多数据库、SQL 编辑器更智能(自动补全/格式化)。pgAdmin 的优势在于 PG 特色功能支持更完整(如 pgAgent 定时任务、ER 图工具)。两者互补使用最佳。
📖 小节
- Docker 安装是最快的开发环境搭建方式(2 分钟一条命令搞定)
- Windows / macOS / Linux 均有原生安装方式,生产环境推荐原生安装
- pgAdmin 4 是 PG 官方工具,DBeaver 是通用工具,推荐同时安装互补使用
- psql 是命令行交互工具,掌握
\l/\c/\dt/\d/\q五个命令即可入门 - 连接参数:host / port / user / password / database,支持 URI 格式连接
- 服务启停:Docker 用
docker start/stop,Linux 用systemctl,macOS 用brew services
📝 作业
-
基础题(难度⭐):使用 Docker 安装 PostgreSQL 17,用 psql 连接后运行
SELECT version();,将输出结果记录下来。 -
进阶题(难度⭐⭐):安装 DBeaver,创建一个到本地 PostgreSQL 的连接。在 DBeaver 中创建一个
todo_items表(包含 id、title、completed、created_at 四列),插入 3 条测试数据并查询。 -
挑战题(难度⭐⭐⭐):同时安装 pgAdmin 4 和 DBeaver,连接同一个 PostgreSQL 实例。分别在两个工具中查看
pg_available_extensions系统视图,对比两者的显示方式差异,写出你更喜欢哪个工具查看这类系统数据及原因。