PostgreSQL 安装与配置 #

安装概述 #

PostgreSQL 支持多种操作系统,本章节将介绍在 Windows、Linux 和 macOS 上的安装方法。

text
┌─────────────────────────────────────────────────────────────┐
│                    安装方式选择                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Windows:                                                  │
│   ├── 官方安装包(推荐)                                    │
│   └── Docker 容器                                          │
│                                                             │
│   Linux:                                                    │
│   ├── 包管理器(apt/yum)                                   │
│   ├── 源码编译                                              │
│   └── Docker 容器                                          │
│                                                             │
│   macOS:                                                    │
│   ├── Homebrew(推荐)                                      │
│   ├── Postgres.app                                         │
│   └── Docker 容器                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Windows 安装 #

方法一:官方安装包 #

1. 下载安装包 #

text
访问官网下载页面:
https://www.postgresql.org/download/windows/

选择版本:PostgreSQL 16.x
选择平台:Windows x86-64

2. 安装步骤 #

text
┌─────────────────────────────────────────────────────────────┐
│                    Windows 安装向导                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1:选择安装目录                                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Installation Directory                              │   │
│  │ C:\Program Files\PostgreSQL\16                      │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  步骤 2:选择组件                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ ☑ PostgreSQL Server      数据库服务器               │   │
│  │ ☑ pgAdmin 4              图形化管理工具             │   │
│  │ ☑ Stack Builder          扩展包管理器               │   │
│  │ ☑ Command Line Tools     命令行工具                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  步骤 3:设置数据目录                                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Data Directory                                      │   │
│  │ C:\Program Files\PostgreSQL\16\data                 │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  步骤 4:设置超级用户密码                                   │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Password: ********                                  │   │
│  │ Retype password: ********                           │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  步骤 5:设置端口                                           │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Port: 5432                                          │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  步骤 6:选择区域设置                                       │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Locale: [Default locale]                            │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3. 验证安装 #

powershell
# 打开命令提示符或 PowerShell

# 检查版本
psql --version
# 输出: psql (PostgreSQL) 16.x

# 连接数据库
psql -U postgres

# 输入密码后进入 psql 命令行
# psql (16.x)
# Type "help" for help.
# 
# postgres=#

方法二:Docker 安装 #

powershell
# 拉取 PostgreSQL 镜像
docker pull postgres:16

# 运行容器
docker run --name my-postgres `
  -e POSTGRES_PASSWORD=mysecretpassword `
  -p 5432:5432 `
  -d postgres:16

# 连接容器中的 PostgreSQL
docker exec -it my-postgres psql -U postgres

Linux 安装 #

Ubuntu/Debian #

1. 添加 PostgreSQL 仓库 #

bash
# 导入仓库签名密钥
sudo apt update
sudo apt install -y curl wget gnupg

# 添加 PostgreSQL 官方仓库
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# 导入签名密钥
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

# 更新包列表
sudo apt update

2. 安装 PostgreSQL #

bash
# 安装 PostgreSQL 16
sudo apt install -y postgresql-16

# 安装附加包(可选)
sudo apt install -y postgresql-contrib-16

# 安装客户端工具
sudo apt install -y postgresql-client-16

3. 服务管理 #

bash
# 启动服务
sudo systemctl start postgresql

# 停止服务
sudo systemctl stop postgresql

# 重启服务
sudo systemctl restart postgresql

# 查看状态
sudo systemctl status postgresql

# 设置开机自启
sudo systemctl enable postgresql

# 查看是否开机自启
sudo systemctl is-enabled postgresql

4. 验证安装 #

bash
# 切换到 postgres 用户
sudo -u postgres psql

# 或者
sudo -i -u postgres
psql

# 在 psql 中检查版本
SELECT version();

# 输出示例:
# PostgreSQL 16.x on x86_64-pc-linux-gnu...

CentOS/RHEL/Rocky Linux #

1. 添加 PostgreSQL 仓库 #

bash
# 安装仓库 RPM
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 禁用内置的 PostgreSQL 模块
sudo dnf -qy module disable postgresql

2. 安装 PostgreSQL #

bash
# 安装 PostgreSQL 16
sudo dnf install -y postgresql16-server

# 安装客户端工具
sudo dnf install -y postgresql16

# 安装附加包
sudo dnf install -y postgresql16-contrib

3. 初始化数据库 #

bash
# 初始化数据库
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

# 启动服务
sudo systemctl start postgresql-16

# 设置开机自启
sudo systemctl enable postgresql-16

# 查看状态
sudo systemctl status postgresql-16

4. 验证安装 #

bash
# 切换用户并连接
sudo -u postgres /usr/pgsql-16/bin/psql

# 检查版本
SELECT version();

macOS 安装 #

方法一:Homebrew(推荐) #

bash
# 安装 Homebrew(如果未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 更新 Homebrew
brew update

# 安装 PostgreSQL
brew install postgresql@16

# 启动服务
brew services start postgresql@16

# 查看服务状态
brew services list

# 连接数据库
psql postgres

Homebrew 常用命令 #

bash
# 启动服务
brew services start postgresql@16

# 停止服务
brew services stop postgresql@16

# 重启服务
brew services restart postgresql@16

# 查看服务列表
brew services list

# 查看 PostgreSQL 信息
brew info postgresql@16

方法二:Postgres.app #

text
┌─────────────────────────────────────────────────────────────┐
│                    Postgres.app                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  特点:                                                     │
│  ✅ 图形化安装,简单易用                                    │
│  ✅ 多版本管理                                              │
│  ✅ 菜单栏状态显示                                          │
│  ✅ 自动启动                                                │
│                                                             │
│  安装步骤:                                                  │
│  1. 访问 https://postgresapp.com                           │
│  2. 下载最新版本                                            │
│  3. 拖拽到 Applications 文件夹                              │
│  4. 打开应用,点击 "Initialize"                             │
│  5. 配置 PATH 环境变量                                      │
│                                                             │
│  配置 PATH:                                                 │
│  echo 'export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"' >> ~/.zshrc
│  source ~/.zshrc                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

方法三:Docker #

bash
# 拉取镜像
docker pull postgres:16

# 运行容器
docker run --name my-postgres \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -p 5432:5432 \
  -v postgres_data:/var/lib/postgresql/data \
  -d postgres:16

# 连接数据库
docker exec -it my-postgres psql -U postgres

配置文件说明 #

主要配置文件 #

text
┌─────────────────────────────────────────────────────────────┐
│                    配置文件位置                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Linux/macOS:                                               │
│  /etc/postgresql/16/main/postgresql.conf                   │
│  /etc/postgresql/16/main/pg_hba.conf                       │
│  /var/lib/postgresql/16/main/pg_ident.conf                 │
│                                                             │
│  Windows:                                                   │
│  C:\Program Files\PostgreSQL\16\data\postgresql.conf       │
│  C:\Program Files\PostgreSQL\16\data\pg_hba.conf           │
│  C:\Program Files\PostgreSQL\16\data\pg_ident.conf         │
│                                                             │
│  Docker:                                                    │
│  /var/lib/postgresql/data/postgresql.conf                  │
│  /var/lib/postgresql/data/pg_hba.conf                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

postgresql.conf 主要配置 #

ini
# 连接设置
listen_addresses = 'localhost'    # 监听地址,'*' 表示所有
port = 5432                       # 监听端口
max_connections = 100             # 最大连接数

# 内存设置
shared_buffers = 128MB            # 共享内存缓冲区
work_mem = 4MB                    # 排序和哈希操作内存
maintenance_work_mem = 64MB       # 维护操作内存
effective_cache_size = 4GB        # 预估系统可用缓存

# 日志设置
logging_collector = on            # 启用日志收集
log_directory = 'log'             # 日志目录
log_filename = 'postgresql-%Y-%m-%d.log'  # 日志文件名
log_statement = 'all'             # 记录所有SQL语句

# 时区设置
timezone = 'Asia/Shanghai'

# 语言设置
lc_messages = 'en_US.UTF-8'

pg_hba.conf 客户端认证 #

ini
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# 本地连接
local   all             all                                     trust

# IPv4 本地连接
host    all             all             127.0.0.1/32            scram-sha-256

# IPv6 本地连接
host    all             all             ::1/128                 scram-sha-256

# 允许所有IP连接(生产环境慎用)
host    all             all             0.0.0.0/0               scram-sha-256

# 复制连接
host    replication     all             127.0.0.1/32            scram-sha-256

认证方法说明 #

方法 说明
trust 无条件信任,不需要密码
reject 拒绝连接
scram-sha-256 SCRAM-SHA-256 密码认证(推荐)
md5 MD5 密码认证
password 明文密码(不安全)
cert SSL 客户端证书认证
peer 使用操作系统用户名

环境变量配置 #

Linux/macOS #

bash
# 编辑 ~/.bashrc 或 ~/.zshrc
export PGHOST=localhost
export PGPORT=5432
export PGUSER=postgres
export PGDATABASE=postgres
export PGPASSWORD=your_password

# 使配置生效
source ~/.bashrc  # 或 source ~/.zshrc

Windows #

powershell
# 系统属性 -> 高级 -> 环境变量

# 或使用命令行设置
[Environment]::SetEnvironmentVariable("PGHOST", "localhost", "User")
[Environment]::SetEnvironmentVariable("PGPORT", "5432", "User")
[Environment]::SetEnvironmentVariable("PGUSER", "postgres", "User")

psql 命令行工具 #

连接数据库 #

bash
# 基本连接
psql -h localhost -p 5432 -U postgres -d mydb

# 使用连接字符串
psql "postgresql://postgres:password@localhost:5432/mydb"

# 使用环境变量后简化连接
psql mydb

# 连接参数说明
# -h, --host=HOST         数据库服务器地址
# -p, --port=PORT         端口号
# -U, --username=USERNAME 用户名
# -d, --dbname=DBNAME     数据库名
# -W, --password          强制输入密码

psql 常用命令 #

sql
-- 连接后常用元命令
\h          -- SQL 命令帮助
\?          -- psql 元命令帮助
\l          -- 列出所有数据库
\c dbname   -- 连接到指定数据库
\dt         -- 列出所有表
\d tablename -- 查看表结构
\du         -- 列出所有用户/角色
\df         -- 列出所有函数
\di         -- 列出所有索引
\x          -- 切换扩展显示模式
\timing     -- 显示执行时间
\q          -- 退出 psql

-- 执行外部 SQL 文件
\i /path/to/file.sql

-- 输出结果到文件
\o output.txt
SELECT * FROM users;
\o

-- 查看当前连接信息
\conninfo

创建第一个数据库 #

sql
-- 连接 PostgreSQL
psql -U postgres

-- 创建数据库
CREATE DATABASE myapp;

-- 连接到新数据库
\c myapp

-- 创建表
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入数据
INSERT INTO users (username, email) VALUES 
    ('alice', 'alice@example.com'),
    ('bob', 'bob@example.com');

-- 查询数据
SELECT * FROM users;

-- 输出:
--  id | username |       email        |         created_at
-- ----+----------+--------------------+----------------------------
--   1 | alice    | alice@example.com  | 2026-03-29 10:00:00.000000
--   2 | bob      | bob@example.com    | 2026-03-29 10:00:00.000000

常见问题解决 #

1. 连接被拒绝 #

text
错误: could not connect to server: Connection refused

解决方案:
1. 检查 PostgreSQL 服务是否运行
2. 检查 postgresql.conf 中 listen_addresses 设置
3. 检查 pg_hba.conf 是否允许连接
4. 检查防火墙设置

2. 认证失败 #

text
错误: FATAL: password authentication failed for user "postgres"

解决方案:
1. 确认密码正确
2. 检查 pg_hba.conf 认证方法
3. 重置密码: ALTER USER postgres PASSWORD 'new_password';

3. 权限问题 #

text
错误: ERROR:  permission denied for table xxx

解决方案:
GRANT ALL PRIVILEGES ON TABLE xxx TO username;
GRANT USAGE, SELECT ON SEQUENCE xxx_id_seq TO username;

学习路径 #

text
入门阶段
├── PostgreSQL简介
├── 安装与配置(本文)
├── 基础语法
└── 数据类型

下一步 #

安装完成后,接下来学习 基础语法,了解 PostgreSQL 的语法规范!

最后更新:2026-03-29