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