1. 更新系统包
在开始安装前,确保系统包是最新的,以避免依赖冲突:
sudo yum update -y
2. 安装PostgreSQL官方YUM仓库(可选但推荐)
若需安装最新版本的PostgreSQL(如15.x),建议先添加官方YUM仓库(以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 # 以PostgreSQL 15为例
4. 初始化数据库集群
使用官方提供的脚本初始化数据库(路径随版本变化,如PostgreSQL 15为/usr/pgsql-15/bin/postgresql-15-setup
):
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
初始化完成后,数据库数据目录默认位于/var/lib/pgsql/15/data
。
5. 启动PostgreSQL服务并设置开机自启
启动服务并配置为开机自动启动:
sudo systemctl start postgresql-15 # 服务名格式为postgresql-版本号
sudo systemctl enable postgresql-15
通过systemctl status postgresql-15
可查看服务状态。
6. 配置PostgreSQL核心参数
postgresql.conf
(调整服务行为)/var/lib/pgsql/15/data/postgresql.conf
),关键参数调整如下:listen_addresses = '*' # 允许所有IP连接(远程访问需开启)
port = 5432 # 默认端口,可根据需求修改
max_connections = 100 # 最大连接数(根据服务器资源调整)
shared_buffers = 25% # 共享缓冲区大小(建议为系统内存的25%)
work_mem = 64MB # 单个查询的工作内存
maintenance_work_mem = 256MB # 维护操作(如VACUUM)的内存
effective_cache_size = 768MB # 操作系统缓存的有效大小(建议为物理内存的50%)
pg_hba.conf
(控制访问权限)/var/lib/pgsql/15/data/pg_hba.conf
),添加以下行允许远程连接(MD5密码认证):host all all 0.0.0.0/0 md5 # 允许所有IP访问所有数据库
host all all ::/0 md5 # 允许IPv6连接(可选)
7. 重启服务应用配置
修改配置文件后,需重启服务使更改生效:
sudo systemctl restart postgresql-15
8. 强化PostgreSQL安全
sudo -u postgres psql
ALTER USER postgres PASSWORD 'your_secure_password'; # 替换为强密码
\q # 退出psql
sudo firewall-cmd --permanent --add-service=postgresql # 或指定端口:--add-port=5432/tcp
sudo firewall-cmd --reload
9. 创建数据库和用户(可选)
sudo -u postgres psql
CREATE ROLE admin WITH LOGIN PASSWORD 'admin_password' SUPERUSER CREATEDB CREATEROLE;
\q
sudo -u postgres psql
CREATE DATABASE myappdb;
CREATE USER myappuser WITH PASSWORD 'myapppassword';
GRANT ALL PRIVILEGES ON DATABASE myappdb TO myappuser;
\q
10. 测试远程连接(可选)
若需从远程机器连接,可使用psql客户端验证:
psql -h <CentOS服务器IP> -U admin -d myappdb
输入密码后,若出现myappdb=>
提示符则连接成功。