温馨提示×

CentOS怎么配置PostgreSQL

小樊
43
2026-07-21 10:04:36
栏目: 云计算

在 CentOS 上配置 PostgreSQL 通常包括 安装、初始化、启动服务、配置远程访问和用户/数据库创建 等步骤。下面以 CentOS 7 / 8 / Stream + PostgreSQL 14/15 为例,给你一套完整、实用的配置流程。


一、安装 PostgreSQL

1️⃣ 添加官方 PostgreSQL 源(推荐)

CentOS 默认仓库版本较旧,建议使用官方源。

# 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 / Stream
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2️⃣ 安装 PostgreSQL

# 查看可用版本
yum search postgresql

# 安装 PostgreSQL 15(示例)
sudo yum install -y postgresql15-server postgresql15-contrib

二、初始化数据库

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

✅ 初始化完成后,数据目录一般在:

/var/lib/pgsql/15/data

三、启动并设置开机自启

sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

查看状态:

systemctl status postgresql-15

四、配置 PostgreSQL

1️⃣ 切换到 postgres 用户

sudo -i -u postgres

进入数据库:

psql

2️⃣ 修改 postgres 用户密码

ALTER USER postgres WITH PASSWORD 'StrongPassword123';

退出:

\q

五、配置远程访问(重点)

1️⃣ 修改 postgresql.conf

vim /var/lib/pgsql/15/data/postgresql.conf

修改或取消注释:

listen_addresses = '*'

2️⃣ 修改 pg_hba.conf

vim /var/lib/pgsql/15/data/pg_hba.conf

在文件末尾添加:

# IPv4 remote connections
host    all             all             0.0.0.0/0               md5

或只允许指定 IP:

host    all             all             192.168.1.0/24          md5

3️⃣ 重启 PostgreSQL

sudo systemctl restart postgresql-15

六、防火墙放行端口(如果开启)

sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

七、创建新用户和数据库(推荐)

sudo -i -u postgres
psql
CREATE USER myuser WITH PASSWORD 'mypassword';
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

八、测试连接

本地测试

psql -h 127.0.0.1 -U myuser -d mydb

远程测试

psql -h <服务器IP> -U myuser -d mydb

九、常见问题排查

❌ 连接被拒绝

  • 检查:listen_addresses
  • 检查:pg_hba.conf
  • 检查:防火墙
  • 检查:SELinux(可临时关闭测试)
setenforce 0

十、常用目录总结

项目 路径
配置文件 /var/lib/pgsql/15/data
日志 /var/lib/pgsql/15/data/log
服务名 postgresql-15

如果你告诉我:

  • ✅ CentOS 版本
  • ✅ PostgreSQL 版本
  • ✅ 是否用于生产环境
  • ✅ 是否需要主从 / 高可用

我可以给你 更精确的生产级配置方案

0