Rocky Linux 9.8 系统通过官方仓库安装 PostgreSQL 17 的 标准化首次配置与全流程测试指南
以下是 Rocky Linux 9.8 系统下,通过官方仓库安装 PostgreSQL 17 后的标准化首次配置与全流程测试指南,所有操作均适配 RHEL 系官方 RPM 包规范。
前置说明
- 已通过 PostgreSQL 官方 YUM 仓库安装
postgresql17-server及基础组件 - 默认数据目录:
/var/lib/pgsql/17/data - 默认配置文件均位于上述数据目录内
- 服务名称:
postgresql-17 - 默认端口:
5432
一、初始化数据库集群
PostgreSQL 服务安装完成后不会自动初始化数据目录,需手动执行官方初始化脚本,该操作仅需执行一次。
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb
- 执行成功输出:
Initializing database ... OK - 若提示目录已存在,说明已执行过初始化,无需重复操作
二、启动服务并设置开机自启
# 设置开机自启并立即启动服务
sudo systemctl enable --now postgresql-17
# 验证服务运行状态
sudo systemctl status postgresql-17
正常状态应为 active (running),可通过以下命令验证端口监听:
ss -lntp | grep 5432
默认仅监听本地回环地址 127.0.0.1:5432。
三、设置数据库超级用户密码
PostgreSQL 会自动创建同名系统用户 postgres,数据库超级用户也为 postgres,默认通过 Unix 域套接字的 peer 认证免密登录,首次配置必须设置密码。
方式一:单行命令快速设置
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '你的强密码';"
方式二:交互式设置
# 切换到 postgres 系统用户
sudo su - postgres
# 进入数据库命令行
psql
-- 执行修改密码SQL
ALTER USER postgres WITH PASSWORD '你的强密码';
-- 退出命令行
\q
# 退出 postgres 用户
exit
安全提示:生产环境请使用包含大小写、数字、特殊符号的强密码,禁止使用弱口令。
四、配置本地认证方式(推荐)
默认本地 Unix 域套接字使用 peer 认证,仅允许 postgres 系统用户免密登录。为支持通用的密码登录方式,需修改客户端认证配置文件。
- 编辑认证配置文件
sudo vi /var/lib/pgsql/17/data/pg_hba.conf
- 找到如下配置行(文件中部,Unix 域套接字配置段)
local all all peer
将 peer 修改为 scram-sha-256(PostgreSQL 17 默认的安全认证算法,安全性远高于 md5):
local all all scram-sha-256
- 重载配置使生效(无需重启服务)
sudo systemctl reload postgresql-17
修改后,本地可通过密码方式直接登录:
psql -U postgres -h localhost
输入设置的密码即可进入数据库。
五、配置远程访问(按需开启)
若需从其他服务器/客户端连接数据库,需完成以下配置,生产环境仅开放给可信IP段。
5.1 修改监听地址
编辑主配置文件:
sudo vi /var/lib/pgsql/17/data/postgresql.conf
找到 listen_addresses 配置项(约第 60 行),默认值为 localhost,修改为:
listen_addresses = '*' # 监听所有网卡地址
# 生产环境建议指定具体IP: listen_addresses = '192.168.1.100'
5.2 添加远程访问授权规则
再次编辑 pg_hba.conf,在文件末尾添加访问规则:
sudo vi /var/lib/pgsql/17/data/pg_hba.conf
按需选择规则(规则自上而下匹配,命中即停止,精确规则放前):
# 允许指定内网网段所有用户通过密码访问所有数据库(推荐)
host all all 192.168.1.0/24 scram-sha-256
# 允许单个指定IP访问
host all all 10.0.0.5/32 scram-sha-256
# 允许所有IP访问(仅测试环境使用,生产环境严禁)
# host all all 0.0.0.0/0 scram-sha-256
5.3 重启服务生效
修改监听地址需要重启服务,仅修改 pg_hba.conf 执行 reload 即可:
sudo systemctl restart postgresql-17
六、配置系统防火墙
Rocky Linux 9 默认启用 firewalld,需放行 PostgreSQL 服务端口。
方式一:按服务名放行(推荐)
sudo firewall-cmd --permanent --add-service=postgresql
sudo firewall-cmd --reload
方式二:按端口号放行
sudo firewall-cmd --permanent --add-port=5432/tcp
sudo firewall-cmd --reload
验证规则
sudo firewall-cmd --list-all
输出中应包含 postgresql 服务或 5432 端口。
安全建议:生产环境可通过
--add-source参数限制源IP,仅允许可信地址访问5432端口。
七、SELinux 配置说明
Rocky Linux 9 默认启用 SELinux 强制模式。
- 使用默认端口
5432和默认数据目录时,系统自带策略已适配,无需额外配置。 - 若修改了默认端口、自定义了数据目录,或出现连接权限拒绝,可按以下方式处理:
- 临时切换宽容模式(用于排查问题)
sudo setenforce 0
- 正式适配(以自定义端口 5433 为例)
# 安装策略管理工具
sudo dnf install -y policycoreutils-python-utils
# 添加端口的SELinux上下文
sudo semanage port -a -t postgresql_port_t -p tcp 5433
不建议永久关闭 SELinux,会显著降低系统安全级别。
八、功能测试与验证
8.1 本地连接测试
psql -U postgres -h localhost
输入密码后进入 postgres=# 命令行即为连接成功。
8.2 创建测试数据库与用户
-- 创建测试数据库
CREATE DATABASE testdb;
-- 创建普通测试用户
CREATE USER testuser WITH PASSWORD 'Test@123456';
-- 授予用户对 testdb 的全部权限
GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
8.3 读写功能验证
切换到测试库,执行建表、插入、查询全流程:
-- 切换数据库
\c testdb
-- 创建测试表
CREATE TABLE student (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入测试数据
INSERT INTO student (name, age) VALUES ('张三', 20), ('李四', 22);
-- 查询验证
SELECT * FROM student;
正常返回数据则说明数据库读写功能正常。
8.4 退出命令行
\q
8.5 远程连接测试(开启远程后)
在客户端机器使用 psql 或数据库工具(DBeaver、pgAdmin 等)验证:
psql -U postgres -h 服务器IP地址 -p 5432 -d postgres
输入密码后成功连接即远程配置生效。
九、基础性能优化建议(可选)
编辑 postgresql.conf 可进行基础调优,参数需根据服务器内存调整,以下为 4GB 内存服务器参考值:
# 共享缓冲区(建议为系统总内存的25%)
shared_buffers = 1GB
# 有效缓存大小(建议为系统总内存的50%-75%)
effective_cache_size = 3GB
# 单操作工作内存
work_mem = 32MB
# 维护操作内存
maintenance_work_mem = 256MB
修改后重启服务生效:
sudo systemctl restart postgresql-17
更多推荐



所有评论(0)