CentOS系统里装PostgreSQL 9.5这事centos postgresql9.5,看着简单,真上手了坑不少。我折腾过好几台服务器,发现很多人卡在源配置或版本兼容上。9.5虽然老,但有些老项目非它不可,得老老实实把流程走对。
添加官方源是关键一步
CentOS默认的yum源里PostgreSQL版本很旧linux重启命令,直接装可能只有9.2甚至更老。得先把PostgreSQL官方提供的yum仓库加进去。
用root用户登录,运行这条命令:
yum install
注意系统架构和版本。如果CentOS是7.x,上面的rpm包就能用。装完源后,最好清一下yum缓存:
yum clean all
yum makecache

这样能确保新加的仓库数据被正确读取。有些新手忘了这步,后面装包时提示找不到,白费半天功夫。
安装服务端和客户端包
源配好后,安装就简单了。PostgreSQL 9.5的包名和旧版不太一样,服务端叫postgresql95-server,客户端叫postgresql95。
yum install postgresql95-server postgresql95
如果只需要远程连别的库,装客户端就行。但大多数场景是本地用,两个都装上。装完后,系统会创建postgres用户和/usr/pgsql-9.5目录centos postgresql9.5,所有二进制文件都在那。
装完记得检查版本:
/usr/pgsql-9.5/bin/postgres --version
输出应该显示9.5.x,核对下是不是你需要的具体小版本号。

初始化数据库并启动服务
数据库装好不会自动初始化,得手动跑一步。CentOS 7下用systemd管理服务,初始化命令是:
/usr/pgsql-9.5/bin/postgresql95-setup initdb
这步会在/var/lib/pgsql/9.5/data目录下生成配置文件。如果提示目录已存在或权限不对,检查下之前有没有残留数据。
初始化成功后,启动服务并设置开机自启:
systemctl start postgresql-9.5
systemctl enable postgresql-9.5
服务名是postgresql-9.5,别写错了。启动后看状态:
systemctl status postgresql-9.5

active (running)才算成功。有人碰到启动失败,多半是data目录权限被改过,或者端口被占,检查5432端口占用情况。
修改密码和配置远程访问
默认只有postgres用户能本地连,密码没设。切到postgres账号改密码:
su - postgres
psql -c "ALTER USER postgres WITH PASSWORD '你的密码';"
退出后,要改两个配置文件才能远程连:postgresql.conf和pg_hba.conf。
编辑/var/lib/pgsql/9.5/data/postgresql.conf,找到listen_addresses这行,改成:
listen_addresses = '*'
然后再改/var/lib/pgsql/9.5/data/pg_hba.conf,在文件末尾加一行,允许你信任的IP段访问:
host all all 0.0.0.0/0 md5

生产环境别写0.0.0.0/0,改成具体网段比如192.168.1.0/24。改完重启服务:
systemctl restart postgresql-9.5
防火墙也要放行5432端口:
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
这样远程工具就能连上了。
常见故障和排查技巧
装9.5经常遇到几个问题。一个是yum安装时提示依赖冲突,尤其系统里装了别的PostgreSQL版本。解决办法是先卸载旧版,或者用--skip-broken参数试试。

另一个坑是初始化报错could not change directory to "/root",这是权限问题,虽然不影响结果,但看着糟心。可以忽略,或者用su - postgres先切换用户再跑命令。
如果服务启动后连不上,先看日志:
tail -f /var/lib/pgsql/9.5/data/pg_log/最新日志文件
日志会写明原因,比如端口冲突、数据损坏、配置语法错。还有种情况是selinux在捣乱,临时关掉测试:
setenforce 0
如果关了就好了,说明需要调整selinux策略或者直接禁用它。生产环境建议保留selinux但配好规则,实在搞不定再考虑关。
这套流程走完,PostgreSQL 9.5在CentOS上就跑起来了。后面就是日常维护,比如定期备份、监控慢查询。9.5虽然不再更新red hat linux,但稳定够用,很多老系统就认它。
