一、安装前准备:通用原则与注意事项
在具体操作前,需明确以下通用原则:
1.1 版本选择
- 生产环境:建议使用 LTS(长期支持)版本,如 PostgreSQL 14、15 或 16。
- 学习/开发:可使用最新稳定版以体验新特性。
- 查看最新版本:https://www.postgresql.org/download/
PostgreSQL 安装指南涵盖 Linux(Ubuntu/CentOS)、Windows、macOS 及 Docker 四大主流环境的部署方案。内容包含官方仓库配置、包管理器使用、图形化安装步骤、容器化持久化数据管理及安全加固策略。重点解决端口冲突、认证失败、中文乱码等常见问题,并提供生产环境与开发环境的最佳实践建议,帮助用户快速完成数据库初始化与连接验证。
在具体操作前,需明确以下通用原则:
PGDATA)应由专用用户(如 postgres)拥有,禁止 root 运行数据库进程。/var/lib/pgsql/data 或 /var/lib/postgresql/{version}/mainC:\Program Files\PostgreSQL\{version}\data/opt/homebrew/var/postgresql(Apple Silicon)或 /usr/local/var/postgresLinux 发行版众多,本文以 Ubuntu(Debian 系) 和 CentOS/Rocky Linux(RHEL 系) 为代表。
优势:自动更新、版本丰富、集成 systemd 服务。
# 导入 GPG 密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 添加仓库(以 Ubuntu 22.04 + PostgreSQL 16 为例)
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
# 更新包索引
sudo apt update
注意:
$(lsb_release -cs)自动获取发行版代号(如 jammy、focal)。若为非标准系统,可手动替换。
# 安装客户端、服务器及 contrib 扩展(含 pg_stat_statements 等)
sudo apt install postgresql-16 postgresql-client-16 postgresql-contrib-16
# 检查服务状态
sudo systemctl status postgresql@16-main
# 切换到 postgres 用户并进入 psql
sudo -u postgres psql -c "SELECT version();"
/var/lib/postgresql/16/mainpostgresql.conf:主配置(监听地址、内存、日志等)pg_hba.conf:客户端认证配置安全提示:默认仅允许本地 peer 认证,无需密码即可登录(通过
sudo -u postgres)。
适用于 RHEL 7/8/9 及其衍生版。
# 下载并安装仓库 RPM(以 Rocky Linux 9 + PG16 为例)
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
sudo dnf install -y postgresql16-server postgresql16-contrib
# 首次安装需手动初始化
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
# 启动并设置开机自启
sudo systemctl enable --now postgresql-16
sudo -u postgres psql -c "SELECT current_database();"
💡 提示:数据目录为
/var/lib/pgsql/16/data。
适用于需要定制编译选项(如启用 ICU、LDAP、SSL)或最新开发版。
# 安装依赖
sudo apt install build-essential zlib1g-dev libreadline-dev flex bison libssl-dev
# 下载源码(以 16.1 为例)
wget https://ftp.postgresql.org/pub/source/v16.1/postgresql-16.1.tar.gz
tar -xzf postgresql-16.1.tar.gz
cd postgresql-16.1
# 配置编译选项
./configure --prefix=/usr/local/pgsql --with-openssl --enable-thread-safety
# 编译与安装
make -j$(nproc)
sudo make install
# 创建用户与数据目录
sudo useradd -r -s /bin/false postgres
sudo mkdir /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data
# 初始化
sudo -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
# 启动
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
注意:源码安装需手动管理服务、PATH 环境变量等。
Windows 提供图形化安装程序,适合桌面开发。
postgresql-16.1-1-windows-x64.exe)C:\Program Files\PostgreSQL\16)C:\Program Files\PostgreSQL\16\data)postgres 用户密码)localhost,Port 5432,Username postgres,Password(安装时设置)命令行:
cd "C:\Program Files\PostgreSQL\16\bin"
psql -U postgres -h localhost
# 输入密码后进入交互界面
postgresql-x64-16或使用命令:
net start postgresql-x64-16
net stop postgresql-x64-16
🔒 安全建议:生产环境中应限制远程访问,修改默认密码策略。
macOS 开发者常用 Homebrew 或 Postgres.app。
优势:命令行友好、易于更新、与开发工具链集成。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装最新版
brew install postgresql@16
# 启动服务(后台常驻)
brew services start postgresql@16
💡 提示:Apple Silicon(M1/M2)芯片路径为
/opt/homebrew,Intel 为/usr/local。
# 默认无需密码(peer 认证)
psql postgres
# 或创建数据库
createdb mydb
psql mydb
brew services list # 查看服务状态
brew info postgresql@16 # 查看配置信息
psql -l # 列出数据库
📁 数据目录:
$(brew --prefix)/var/postgresql@16
适合不喜欢命令行的 macOS 用户。
psql✨ 优点:零配置、一键启停、多版本共存、集成 pgAdmin。
容器化部署适合开发、测试、CI/CD 及微服务架构。
docker pull postgres:16
docker run --name mypg -e POSTGRES_PASSWORD=mypassword -p 5432:5432 -d postgres:16
-e POSTGRES_PASSWORD:设置 postgres 用户密码(必需)-p 5432:5432:映射端口-d:后台运行# 创建卷
docker volume create pgdata
# 启动容器并挂载卷
docker run --name mypg \
-e POSTGRES_PASSWORD=mypassword \
-e POSTGRES_DB=myapp \
-v pgdata:/var/lib/postgresql/data \
-p 5432:5432 \
-d postgres:16
优势:数据不随容器销毁而丢失。
可通过挂载配置文件覆盖默认设置:
# 创建自定义 postgresql.conf
echo "shared_preload_libraries = 'pg_stat_statements'" > ./my-postgres.conf
# 启动时挂载
docker run ... -v $(pwd)/my-postgres.conf:/etc/postgresql/postgresql.conf ...
或使用 initdb 脚本初始化:
# 准备 init.sql
echo "CREATE USER appuser WITH PASSWORD 'apppass';" > init.sql
# 挂载到 docker-entrypoint-initdb.d
docker run ... -v $(pwd)/init.sql:/docker-entrypoint-initdb.d/init.sql ...
官方镜像会在首次启动时执行
/docker-entrypoint-initdb.d/下的.sql或.sh脚本。
# 进入容器执行 psql
docker exec -it mypg psql -U postgres
# 或从宿主机连接
psql -h localhost -U postgres -d postgres
无论何种方式安装,以下配置至关重要。
编辑 postgresql.conf:
listen_addresses = '*' # 或指定 IP,如 'localhost,192.168.1.100'
port = 5432
仅在必要时开启,配合防火墙使用。
典型配置(位于数据目录下):
# TYPE DATABASE USER ADDRESS METHOD
local all postgres peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host mydb appuser 192.168.1.0/24 md5
md5:密码加密认证trust:无密码(仅限本地测试)SELECT pg_reload_conf(); 或 systemctl reload postgresql-- 登录 psql
sudo -u postgres psql
-- 创建用户
CREATE USER myapp WITH PASSWORD 'strongpassword';
-- 创建数据库并授权
CREATE DATABASE myapp OWNER myapp;
-- 退出
\q
为方便命令行使用,可将 psql 加入 PATH:
export PATH="/usr/pgsql-16/bin:$PATH"(加入 ~/.bashrc)C:\Program Files\PostgreSQL\16\binpg_hba.conf 是否为 md5;sudo lsof -i :5432(Linux/macOS)或 netstat -ano | findstr :5432(Windows)LC_COLLATE='zh_CN.UTF-8'(Linux);postgresql.conf 中设置 client_encoding = 'UTF8'。| 平台 | 推荐方式 | 适用场景 |
|---|---|---|
| Ubuntu | 官方 APT 仓库 | 生产服务器、云主机 |
| CentOS | 官方 YUM 仓库 | 企业级 Linux 服务器 |
| Windows | EDB 图形安装程序 | 桌面开发、学习 |
| macOS | Homebrew 或 Postgres.app | 本地开发、快速原型 |
| 任意平台 | Docker 容器 | 微服务、CI/CD、隔离测试 |
核心原则:
PostgreSQL 的安装只是第一步,后续还需关注备份策略(pg_dump/pg_basebackup)、性能调优(shared_buffers, work_mem)、高可用(流复制、Patroni)等进阶主题。
安装完成后,立即运行 \conninfo 和 SELECT version(); 验证环境,并尝试创建第一个数据库。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online