下面以 CentOS 7 / CentOS 8 为例,给你一套从零部署 PostgreSQL 的完整流程,包括 yum 安装、初始化、远程访问、防火墙、基本使用,适用于绝大多数生产环境。
一、选择 PostgreSQL 版本
常见版本:
- PostgreSQL 12(稳定)
- PostgreSQL 14 / 15(推荐)
下面以 PostgreSQL 14 为例。
二、安装 PostgreSQL(官方 yum 源,推荐 ✅)
1️⃣ 安装 PostgreSQL 官方仓库
# CentOS 7
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# CentOS 8
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2️⃣ 安装 PostgreSQL 14
sudo yum install -y postgresql14-server postgresql14-contrib
三、初始化数据库
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
初始化完成后,数据目录通常在:
/var/lib/pgsql/14/data
四、启动并设置开机自启
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
查看状态:
systemctl status postgresql-14
五、配置远程访问(常见需求 ✅)
1️⃣ 修改 postgresql.conf
sudo vi /var/lib/pgsql/14/data/postgresql.conf
修改:
listen_addresses = '*'
2️⃣ 修改 pg_hba.conf
sudo vi /var/lib/pgsql/14/data/pg_hba.conf
末尾添加:
# 允许所有 IP 使用 md5 密码登录
host all all 0.0.0.0/0 md5
⚠️ 生产环境建议限制 IP 段,例如
192.168.1.0/24
3️⃣ 重启服务
sudo systemctl restart postgresql-14
六、防火墙放行 PostgreSQL 端口(默认 5432)
firewalld
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
iptables(老系统)
iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
七、设置 PostgreSQL 用户与数据库
1️⃣ 切换到 postgres 用户
sudo -i -u postgres
2️⃣ 进入数据库
psql
3️⃣ 创建用户和数据库
-- 创建用户
CREATE USER myuser WITH PASSWORD 'mypassword';
-- 创建数据库
CREATE DATABASE mydb OWNER myuser;
-- 授权
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
退出:
\q
八、验证连接
本地连接
psql -h 127.0.0.1 -U myuser -d mydb
远程连接(其它机器)
psql -h -U myuser -d mydb
九、常用管理命令
| 功能 | 命令 |
|---|---|
| 启动 | systemctl start postgresql-14 |
| 停止 | systemctl stop postgresql-14 |
| 重启 | systemctl restart postgresql-14 |
| 状态 | systemctl status postgresql-14 |
| 登录 | psql -U user -d db |
| 查看数据库 | \l |
| 查看表 | \dt |
十、常见问题
❓ 连接失败
- 检查
listen_addresses - 检查
pg_hba.conf - 检查防火墙
- 检查 PostgreSQL 是否运行
❓ 密码错误
PostgreSQL 默认 禁止密码登录 root
必须使用:
su - postgres
✅ 总结(最简流程)
yum install postgresql14-server
postgresql-14-setup initdb
systemctl enable --now postgresql-14
vim /var/lib/pgsql/14/data/postgresql.conf
vim /var/lib/pgsql/14/data/pg_hba.conf
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
如果你需要:
- 源码编译安装
- 主从复制(HA)
- Docker 部署 PostgreSQL
- CentOS Stream 9
可以直接告诉我 ✅