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若提示目录已存在说明已执行过初始化无需重复操作二、启动服务并设置开机自启# 设置开机自启并立即启动服务sudosystemctlenable--nowpostgresql-17# 验证服务运行状态sudosystemctl status postgresql-17正常状态应为active (running)可通过以下命令验证端口监听ss-lntp|grep5432默认仅监听本地回环地址127.0.0.1:5432。三、设置数据库超级用户密码PostgreSQL 会自动创建同名系统用户postgres数据库超级用户也为postgres默认通过 Unix 域套接字的peer认证免密登录首次配置必须设置密码。方式一单行命令快速设置sudo-upostgres psql-cALTER USER postgres WITH PASSWORD 你的强密码;方式二交互式设置# 切换到 postgres 系统用户sudosu- postgres# 进入数据库命令行psql -- 执行修改密码SQL ALTERUSERpostgres WITH PASSWORD你的强密码;-- 退出命令行\q# 退出 postgres 用户exit安全提示生产环境请使用包含大小写、数字、特殊符号的强密码禁止使用弱口令。四、配置本地认证方式推荐默认本地 Unix 域套接字使用peer认证仅允许postgres系统用户免密登录。为支持通用的密码登录方式需修改客户端认证配置文件。编辑认证配置文件sudovi/var/lib/pgsql/17/data/pg_hba.conf找到如下配置行文件中部Unix 域套接字配置段local all all peer将peer修改为scram-sha-256PostgreSQL 17 默认的安全认证算法安全性远高于 md5local all all scram-sha-256重载配置使生效无需重启服务sudosystemctl reload postgresql-17修改后本地可通过密码方式直接登录psql-Upostgres-hlocalhost输入设置的密码即可进入数据库。五、配置远程访问按需开启若需从其他服务器/客户端连接数据库需完成以下配置生产环境仅开放给可信IP段。5.1 修改监听地址编辑主配置文件sudovi/var/lib/pgsql/17/data/postgresql.conf找到listen_addresses配置项约第 60 行默认值为localhost修改为listen_addresses * # 监听所有网卡地址 # 生产环境建议指定具体IP listen_addresses 192.168.1.1005.2 添加远程访问授权规则再次编辑pg_hba.conf在文件末尾添加访问规则sudovi/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-2565.3 重启服务生效修改监听地址需要重启服务仅修改pg_hba.conf执行reload即可sudosystemctl restart postgresql-17六、配置系统防火墙Rocky Linux 9 默认启用firewalld需放行 PostgreSQL 服务端口。方式一按服务名放行推荐sudofirewall-cmd--permanent--add-servicepostgresqlsudofirewall-cmd--reload方式二按端口号放行sudofirewall-cmd--permanent--add-port5432/tcpsudofirewall-cmd--reload验证规则sudofirewall-cmd --list-all输出中应包含postgresql服务或 5432 端口。安全建议生产环境可通过--add-source参数限制源IP仅允许可信地址访问5432端口。七、SELinux 配置说明Rocky Linux 9 默认启用 SELinux 强制模式。使用默认端口5432和默认数据目录时系统自带策略已适配无需额外配置。若修改了默认端口、自定义了数据目录或出现连接权限拒绝可按以下方式处理临时切换宽容模式用于排查问题sudosetenforce0正式适配以自定义端口 5433 为例# 安装策略管理工具sudodnfinstall-ypolicycoreutils-python-utils# 添加端口的SELinux上下文sudosemanage port-a-tpostgresql_port_t-ptcp5433不建议永久关闭 SELinux会显著降低系统安全级别。八、功能测试与验证8.1 本地连接测试psql-Upostgres-hlocalhost输入密码后进入postgres#命令行即为连接成功。8.2 创建测试数据库与用户-- 创建测试数据库CREATEDATABASEtestdb;-- 创建普通测试用户CREATEUSERtestuserWITHPASSWORDTest123456;-- 授予用户对 testdb 的全部权限GRANTALLPRIVILEGESONDATABASEtestdbTOtestuser;8.3 读写功能验证切换到测试库执行建表、插入、查询全流程-- 切换数据库\c testdb-- 创建测试表CREATETABLEstudent(idSERIALPRIMARYKEY,nameVARCHAR(50)NOTNULL,ageINT,create_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-- 插入测试数据INSERTINTOstudent(name,age)VALUES(张三,20),(李四,22);-- 查询验证SELECT*FROMstudent;正常返回数据则说明数据库读写功能正常。8.4 退出命令行\q8.5 远程连接测试开启远程后在客户端机器使用 psql 或数据库工具DBeaver、pgAdmin 等验证psql-Upostgres-h服务器IP地址-p5432-dpostgres输入密码后成功连接即远程配置生效。九、基础性能优化建议可选编辑postgresql.conf可进行基础调优参数需根据服务器内存调整以下为 4GB 内存服务器参考值# 共享缓冲区建议为系统总内存的25% shared_buffers 1GB # 有效缓存大小建议为系统总内存的50%-75% effective_cache_size 3GB # 单操作工作内存 work_mem 32MB # 维护操作内存 maintenance_work_mem 256MB修改后重启服务生效sudosystemctl restart postgresql-17