PostgreSQL: 如何安装PostgreSQL并完成首次连接

最后更新:2026-08-26

安装 PostgreSQL 并完成首次连接是学习的第一步——本文将带你用最快的方式跑起来一个 PG 实例。

1. 你将学到


2. 一个新入职开发者的真实故事

(1) 痛点:30 分钟内必须跑起来数据库

Bob 刚入职一家电商公司,经理要求他在 30 分钟内搭建好本地开发环境的 PostgreSQL 数据库。Bob 之前只用过 MySQL,对 PG 完全陌生:

(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) 收益


3. 安装方式对比

方式 优点 缺点 推荐场景
Docker 快速、干净、可复现、可一键销毁 需先安装 Docker 开发环境(推荐)
Windows 安装包 图形化安装、系统服务自动注册 卸载不干净、版本管理难 Windows 开发者
macOS Homebrew 命令行安装、版本切换方便 需熟悉 Homebrew macOS 开发者
Linux 包管理器 原生集成、性能最优 不同发行版命令不同 Linux 服务器/开发
云服务 零运维、自动备份 有费用、网络延迟 生产环境
100%
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' 重设密码,再改回 md5scram-sha-256 认证。
Q 端口 5432 被占用怎么办?
Alsof -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 图工具)。两者互补使用最佳。

📖 小节


📝 作业

  1. 基础题(难度⭐):使用 Docker 安装 PostgreSQL 17,用 psql 连接后运行 SELECT version();,将输出结果记录下来。

  2. 进阶题(难度⭐⭐):安装 DBeaver,创建一个到本地 PostgreSQL 的连接。在 DBeaver 中创建一个 todo_items 表(包含 id、title、completed、created_at 四列),插入 3 条测试数据并查询。

  3. 挑战题(难度⭐⭐⭐):同时安装 pgAdmin 4 和 DBeaver,连接同一个 PostgreSQL 实例。分别在两个工具中查看 pg_available_extensions 系统视图,对比两者的显示方式差异,写出你更喜欢哪个工具查看这类系统数据及原因。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏