温馨提示×

CentOS怎么部署PostgreSQL

小樊
50
2026-08-05 00:28:44
栏目: 云计算

下面以 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 <服务器IP> -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

可以直接告诉我 ✅

0