在CentOS系统中使用yum包管理器安装PostgreSQL(简称pgsql)是一种高效且可靠的方式,尤其适合需要快速部署数据库服务的场景,本文将详细介绍完整的安装步骤、配置方法及常见问题的解决方案,帮助用户顺利完成PostgreSQL的部署与管理。

安装前的准备工作
在开始安装PostgreSQL之前,需要确保系统满足基本要求并完成必要的准备工作,推荐使用CentOS 7或更高版本,这些版本对PostgreSQL的支持较为完善,确保系统已更新至最新的软件包列表,可通过运行sudo yum update -y命令完成,PostgreSQL需要特定的依赖库,如readline、zlib等,这些通常在安装过程中会自动解决,但提前检查可避免潜在问题。
添加PostgreSQL官方软件源
CentOS默认的软件源中可能不包含最新版本的PostgreSQL,因此建议添加官方提供的软件源,PostgreSQL官方提供了RPM包管理工具pgdg-redhat-repo,用于自动配置软件源,执行以下命令添加仓库:
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用户,需替换为对应的EL版本号,添加完成后,可通过sudo yum repolist all查看可用的软件源,确认pgdg*相关仓库已启用。
安装PostgreSQL服务器及客户端
添加软件源后,即可使用yum安装PostgreSQL,根据需求选择安装版本(如PostgreSQL 13、14等),以PostgreSQL 14为例,执行以下命令:
sudo yum install -y postgresql14-server postgresql14-contrib
此命令会安装PostgreSQL服务器核心程序、客户端工具以及额外的扩展组件(如pg_stat_statements等),安装完成后,需初始化数据库集群,通过以下命令完成初始化:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
初始化成功后,启动PostgreSQL服务并设置为开机自启:
sudo systemctl start postgresql-14 sudo systemctl enable postgresql-14
配置PostgreSQL服务
安装完成后,需对PostgreSQL进行基本配置以满足实际需求,修改pg_hba.conf文件以配置客户端认证方式,该文件位于/var/lib/pgsql/14/data/目录下,默认仅允许本地通过peer方式连接,可通过以下命令编辑文件:

sudo vi /var/lib/pgsql/14/data/pg_hba.conf
将以下行添加到文件末尾,允许所有IP地址通过密码连接(生产环境建议限制IP):
host all all 0.0.0.0/0 md5
修改完成后,需重启PostgreSQL服务使配置生效:
sudo systemctl restart postgresql-14
设置用户与数据库
PostgreSQL安装后会自动创建postgres超级用户,但默认无密码,建议为postgres用户设置密码并创建新的数据库用户,切换至postgres用户:
sudo su - postgres
执行psql命令进入PostgreSQL命令行界面,然后设置密码:
ALTER USER postgres WITH PASSWORD 'your_password';
创建新用户和数据库(例如用户dbuser,数据库mydb):
CREATE USER dbuser WITH PASSWORD 'user_password'; CREATE DATABASE mydb OWNER dbuser; GRANT ALL PRIVILEGES ON DATABASE mydb TO dbuser; \q
退出postgres用户后,可通过psql -h localhost -U dbuser -d mydb测试连接。
防火墙与端口配置
PostgreSQL默认监听5432端口,需确保防火墙允许该端口的访问,在CentOS 7中,使用以下命令开放端口:

sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload
对于CentOS 8,可使用firewall-cmd或nftables工具完成配置,若需远程访问,还需确保postgresql.conf中的listen_addresses参数设置为:
sudo vi /var/lib/pgsql/14/data/postgresql.conf
修改listen_addresses = 'localhost'为listen_addresses = '*',并重启服务。
常见问题与维护
在PostgreSQL使用过程中,可能会遇到服务无法启动、连接超时等问题,可通过sudo journalctl -u postgresql-14查看服务日志排查错误,定期备份数据库是保障数据安全的重要措施,使用pg_dump工具可轻松实现备份:
pg_dump -U dbuser -F c mydb > backup.dump
恢复数据库则可通过pg_restore命令完成,建议定期更新PostgreSQL至最新版本,以获取安全补丁和性能优化:
sudo yum update -y postgresql14-server
FAQs
问题1:如何更改PostgreSQL的数据存储路径?
答:首先停止PostgreSQL服务,然后创建新的数据目录(如/data/pgsql),并将原数据目录内容复制到新位置,修改postgresql.conf中的data_directory参数指向新路径,最后重启服务,注意确保新目录的权限与原目录一致(通常为700)。
问题2:PostgreSQL内存占用过高如何优化?
答:可通过调整postgresql.conf中的shared_buffers、work_mem等参数降低内存使用,将shared_buffers设置为系统内存的25%左右,work_mem根据并发查询数适当减小,修改后需重启服务生效,同时建议使用pg_stat_activity监控查询性能,避免长时间运行的查询占用资源。