1. 更新系统包
在开始安装前,确保系统包是最新的,以避免依赖冲突:
sudo yum update -y 2. 安装PostgreSQL官方YUM仓库(可选但推荐)
若需安装最新版本的PostgreSQL(如15.x),需先添加官方仓库(以CentOS 7为例,其他版本需调整URL):
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 若安装过程中提示缺少libzstd等依赖,可手动下载对应版本的RPM包安装(如CentOS 7需下载libzstd-1.5.5-1.el7.x86_64.rpm)。
3. 安装PostgreSQL服务器及扩展工具
通过YUM安装PostgreSQL服务器(postgresql-server)和常用扩展(postgresql-contrib,包含额外工具如pgbench、pg_dump等):
sudo yum install -y postgresql15-server postgresql15-contrib # 版本号根据需求调整 4. 初始化数据库集群
使用官方提供的脚本初始化数据库(路径随版本变化,如PostgreSQL 15为/usr/pgsql-15/bin/postgresql-15-setup):
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb # 替换为实际版本 初始化后,数据库文件默认存放在/var/lib/pgsql/15/data/(CentOS 7)或/var/lib/pgsql/<version>/data/(CentOS 8+)。
5. 启动PostgreSQL服务并设置开机自启
启动服务并配置为系统启动时自动运行:
sudo systemctl start postgresql-15 # 替换为实际版本(如postgresql-14) sudo systemctl enable postgresql-15 通过systemctl status postgresql-15可查看服务状态。
6. 配置PostgreSQL核心参数
postgresql.conf(调整服务行为):/etc/postgresql/15/main/postgresql.conf(CentOS 8+)或/var/lib/pgsql/15/data/postgresql.conf(CentOS 7)。主要修改以下参数:listen_addresses = '*' # 允许所有IP连接(远程访问需开启) port = 5432 # 默认端口(可根据需求调整) max_connections = 100 # 最大连接数(根据服务器资源调整) shared_buffers = 256MB # 共享缓冲区大小(建议为系统内存的25%) pg_hba.conf(配置访问权限):postgresql.conf同级。添加以下行允许远程连接(本地连接默认允许):host all all 0.0.0.0/0 md5 # 允许所有IP通过MD5密码认证访问所有数据库 host all all ::/0 md5 # 允许IPv6连接(可选) 7. 重启服务应用配置
修改配置文件后,需重启服务使更改生效:
sudo systemctl restart postgresql-15 8. 强化PostgreSQL安全
psql命令修改密码:sudo -i -u postgres psql ALTER USER postgres PASSWORD 'your_secure_password'; # 替换为强密码 \q # 退出psql exit # 退出postgres用户 sudo firewall-cmd --permanent --add-service=postgresql # 或指定端口:--add-port=5432/tcp sudo firewall-cmd --reload 9. 创建数据库和用户(可选但推荐)
为应用创建专用数据库和用户(避免直接使用超级用户):
sudo -u postgres psql CREATE DATABASE myappdb; # 创建数据库 CREATE USER myappuser WITH PASSWORD 'myapppassword'; # 创建用户 GRANT ALL PRIVILEGES ON DATABASE myappdb TO myappuser; # 授权 \q # 退出psql 10. 测试连接
使用psql客户端验证连接(本地或远程均可):
psql -h localhost -U myappuser -d myappdb # 输入密码后,若出现psql提示符则成功 若为远程连接,需将客户端IP添加至pg_hba.conf的白名单,并确保防火墙允许该IP访问。