在 CentOS 上部署 PostgreSQL,常见有三种方式:官方仓库安装(推荐)、CentOS 自带仓库安装、源码编译安装。下面以 CentOS 7 / 8 / Stream 为例,重点讲解 推荐方式(官方仓库),并补充常用配置。
以 PostgreSQL 16 为例(可换成 15 / 14):
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql16-server postgresql16-contrib
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16
查看状态:
systemctl status postgresql-16
sudo -i -u postgres
进入数据库:
psql
ALTER USER postgres WITH PASSWORD 'StrongPassword';
退出:
\q
postgresql.confsudo vi /var/lib/pgsql/16/data/postgresql.conf
修改:
listen_addresses = '*'
pg_hba.confsudo vi /var/lib/pgsql/16/data/pg_hba.conf
添加:
host all all 0.0.0.0/0 md5
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
sudo systemctl restart postgresql-16
版本较旧(如 PostgreSQL 10):
sudo yum install -y postgresql-server postgresql-contrib
sudo postgresql-setup initdb
sudo systemctl enable postgresql
sudo systemctl start postgresql
⚠️ 不建议生产环境使用
本地连接:
psql -h 127.0.0.1 -U postgres
查看版本:
SELECT version();
listen_addressespg_hba.confrm -rf /var/lib/pgsql/16/data/*
/usr/pgsql-16/bin/postgresql-16-setup initdb
✅ 使用官方仓库
✅ 单独数据盘
✅ 定期备份(pg_dump)
✅ 使用 md5 / scram-sha-256 认证
✅ 禁止 postgres 用户直接远程登录
如果你告诉我:
我可以给你一份 更精确的部署方案或生产级配置模板。