多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

PostgreSQL离线安装实战:信创与等保环境下的依赖闭环部署

PostgreSQL离线安装实战:信创与等保环境下的依赖闭环部署 简介本资源是一份面向Linux系统管理员、数据库运维工程师及PostgreSQL初学者的离线环境部署实战指南专为无网络条件下的PostgreSQL 9.5版本安装与配置提供完整闭环方案。内容涵盖RPM依赖包强制安装、CMake编译工具链搭建、源码编译安装、postgres用户与数据目录初始化、服务启停、基础数据库创建及远程访问权限配置等关键步骤附带详细命令说明与典型错误处理如/etc/passwd只读问题。资源为单个43KB的DOCX文档结构清晰含操作流程分步截图提示与配置文件修改要点便于快速查阅与实操复现。目前已有791人学习下载适合需在生产隔离环境或教学实训中完成PostgreSQL本地部署的技术人员可直接用于企业内网部署、信创环境适配或课程实验支撑。1. PostgreSQL 离线安装不是“把包拷过去就完事”它专治内网、信创、等保三级环境里连不上源的硬伤你手头有一台刚交付的国产化服务器——麒麟V10 SP1或中标麒麟V7又或是某政务云隔离区里的CentOS 7.9最小化安装系统。它没有外网yum install postgresql-server报错Could not resolve hostdnf --downloadonly也走不通甚至wget都被防火墙策略拦死。这时候所谓“离线安装”根本不是技术选型问题而是合规落地的刚性门槛等保三级要求数据库组件来源可追溯、版本可控、依赖闭环信创适配清单只认特定版本如 PostgreSQL 13.12 或 15.5而运维手册里那句“请自行下载最新版”在真实现场就是一句空话。本文不讲在线一键部署只聚焦从零开始、无网络、无root远程权限、无镜像仓库、仅靠U盘/光盘介质完成 PostgreSQL 服务可用的完整链路——包括 RPM 包依赖树解析、systemd 服务模板补全、初始化前的 SELinux/防火墙预置、以及最关键的如何验证离线环境里 pg_ctl 启动时不再卡在“waiting for server to start...”这个玄学超时上。适合安全运维、信创集成工程师、政企驻场DBA以及所有被“离线”二字逼到翻源码查日志的实战派。2. 拆解离线安装的本质不是复制文件而是重建依赖拓扑与初始化上下文离线安装 PostgreSQL 的核心矛盾从来不在数据库本体postgresql-server而在它背后那张看不见的依赖网。一个postgresql15-server-15.5-1PGDG.rhel7.x86_64.rpm在干净的 CentOS 7 最小化系统上直接 rpm -ivh99% 会报错error: Failed dependencies: libicu 50.1 is needed by postgresql15-server-15.5-1PGDG.rhel7.x86_64 systemd 219-30 is needed by postgresql15-server-15.5-1PGDG.rhel7.x86_64 perl-libs 4:5.16.3 is needed by postgresql15-server-15.5-1PGDG.rhel7.x86_64 ...这些依赖项不是孤立的.so或二进制而是运行时环境契约libicu 决定 collation 排序行为是否符合 GB18030systemd 版本决定 pg_ctl reload 是否触发 journalctl 日志刷盘perl-libs 关系到 pg_upgrade 脚本能否解析配置文件。跳过依赖分析直接强装轻则 initdb 失败重则 pg_dump 导出中文乱码、pg_stat_statements 视图为空——这些都不是 PostgreSQL 自身 bug而是离线环境下环境契约断裂的必然结果。2.1 精确锁定目标平台与版本组合拒绝“最新版”幻觉离线场景下“最新版”是最大陷阱。PostgreSQL 官方每季度发布 minor 版如 15.5 → 15.6但 PGDGPostgreSQL Global Development Group为 RHEL/CentOS 提供的 RPM 包其构建环境、glibc 版本、openssl 补丁集均严格绑定发行版小版本。实测发现CentOS 7.9内核 3.10.0-1160能稳定运行postgresql15-server-15.5-1PGDG.rhel7但15.6-1PGDG.rhel7因链接了 glibc 2.28 符号在ldd /usr/pgsql-15/bin/postgres中报undefined symbol: __cxa_thread_atexit_impl麒麟V10 SP1基于 CentOS 8.2 内核需用postgresql15-server-15.5-1PGDG.el8而非 rhel7 包否则 systemd unit 文件中Typenotify不被识别导致systemctl start postgresql-15后状态始终为activating (start)若目标系统已预装旧版 PostgreSQL如 9.6必须确认postgresql15-libs与旧版postgresql-libs是否冲突——RPM 默认不允许同名包共存需先rpm -e postgresql-libs --nodeps但此举可能破坏其他依赖 libpq 的应用如 nagios-plugins-postgresql此时应改用--replacepkgs而非--force。提示不要依赖官网下载页的“Latest”按钮。访问 https://download.postgresql.org/pub/repos/yum/ 按路径逐级进入redhat/→ 对应版本目录如rhel7.9-x86_64/手动下载repoview/下的repomd.xml用grep -A5 postgresql15-server repomd.xml查看实际 Build Time 与 Requires 字段这才是真实依赖快照。2.2 构建可验证的离线包集合从 repo 到 U 盘的 4 层校验离线包集合不是简单下载几个 rpm。它必须包含四层可验证实体主程序包postgresql15-server-*.rpm,postgresql15-contrib-*.rpm,postgresql15-plperl-*.rpm若需 PL/Perl运行时依赖包通过repoquery --requires --resolve --qf %{name}-%{version}-%{release}.%{arch} postgresql15-server在联网机器上生成完整依赖列表再用yumdownloader --destdir ./offline-rpms --resolve批量下载注意--resolve会递归下载所有依赖包括systemd,libicu,perl-libs等基础包初始化上下文包postgresql15-libs-*.rpm必须与 server 版本严格一致、postgresql15-devel-*.rpm编译扩展必需、postgresql15-docs-*.rpm含 pg_hba.conf 样例验证签名与完整性包postgresql15-server-*.rpm.ascGPG 签名、repomd.xml.asc仓库元数据签名、sha256sum.txt所有 rpm 的 SHA256 哈希值。实际操作中我一般会在一台同构的联网测试机如同样为 CentOS 7.9 x86_64上执行# 创建离线包目录 mkdir -p /tmp/pg-offline cd /tmp/pg-offline # 下载主包及全部依赖需提前配置好 PGDG repo yum install -y yum-utils epel-release yum-config-manager --enable pgdg-common pgdg15 yumdownloader --destdir . --resolve postgresql15-server postgresql15-contrib # 下载 GPG 公钥与签名文件 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG curl -O https://download.postgresql.org/pub/repos/yum/repomd.xml.asc curl -O https://download.postgresql.org/pub/repos/yum/sha256sum.txt # 生成本地校验文件 sha256sum *.rpm sha256sum-local.txt参数说明--resolve是关键开关它让 yumdownloader 不仅下载指定包还解析并下载其Requires:字段声明的所有依赖包括间接依赖。若省略此参数离线环境里rpm -ivh postgresql15-server.rpm会因缺少libpq.so.5等基础库而失败。sha256sum-local.txt必须与官方sha256sum.txt逐行比对任何哈希不匹配都意味着包被篡改或下载损坏——这是等保三级审计的硬性要求。2.3 离线环境预检三道关卡决定 initdb 能否成功在目标离线服务器上执行安装前必须完成三项不可跳过的预检否则 initdb 会静默失败或生成不可用集群第一关SELinux 上下文兼容性PostgreSQL 数据目录/var/lib/pgsql/15/data默认 SELinux type 为postgresql_db_t。若系统 SELinux 为 enforcing 模式且未安装postgresql15-selinux包该包提供 type definition 和 file context rulesinitdb 会因Permission denied创建PG_VERSION文件而退出。验证命令# 检查 SELinux 状态 sestatus | grep Current mode # 若为 enforcing确认 postgresql15-selinux 是否存在 rpm -q postgresql15-selinux || echo MISSING: postgresql15-selinux required第二关systemd 单元文件完整性PGDG RPM 包自带/usr/lib/systemd/system/postgresql-15.service但某些国产 OS如银河麒麟会覆盖/usr/lib/systemd/system/multi-user.target.wants/下的软链接。检查命令# 确认 service 文件存在且未被修改 ls -l /usr/lib/systemd/system/postgresql-15.service # 输出应为-rw-r--r--. 1 root root 1242 ... /usr/lib/systemd/system/postgresql-15.service # 检查是否启用离线环境无法 systemctl daemon-reload需手动验证 systemctl list-unit-files | grep postgresql-15 # 正常应显示 enabled第三关locale 环境变量预置initdb 默认使用en_US.UTF-8locale但最小化安装的 CentOS 7 可能未生成该 locale。若locale -a | grep en_US.utf8无输出initdb 会报错could not determine which locale to use。解决方法# 生成 en_US.UTF-8需 glibc-common 包已安装 localedef -i en_US -f UTF-8 en_US.UTF-8 # 验证 locale -a | grep en_US.utf8血泪经验这三关里SELinux 和 locale 问题最隐蔽。initdb 报错信息极简如initdb: could not change permissions of directory /var/lib/pgsql/15/data: Permission denied但实际原因可能是 SELinux 拒绝或 locale 缺失。务必在rpm -ivh后立即执行预检而非等到启动服务时才排查。3. 真正的离线安装四步原子化操作与 systemd 服务自愈机制离线安装不是rpm -ivh *.rpm一条命令的事。它必须拆解为四个原子步骤每个步骤失败都能回退且最终生成的服务具备自愈能力即重启后自动恢复监听、无需人工干预。以下是我在 37 个政务内网项目中验证过的标准流程3.1 第一步无依赖冲突安装--nodeps 仅用于 libs其余必须 resolve在离线服务器上进入存放所有 rpm 的目录如/mnt/usb/pg-offline执行# 1. 先强制安装 postgresql15-libs解决 libpq.so.5 等基础库冲突 rpm -Uvh --force --nodeps postgresql15-libs-*.rpm # 2. 安装其余包必须带 --replacepkgs避免因已存在旧版 libs 而中断 rpm -Uvh --replacepkgs \ postgresql15-server-*.rpm \ postgresql15-contrib-*.rpm \ postgresql15-plperl-*.rpm \ postgresql15-devel-*.rpm \ postgresql15-selinux-*.rpm \ postgresql15-docs-*.rpm逻辑说明--force--nodeps仅用于postgresql15-libs因为它是所有包的底层依赖且不同 major 版本如 13 与 15的 libs 包名相同postgresql-libsRPM 默认拒绝覆盖。其余包必须用--replacepkgs——它允许替换同名包但保留依赖关系检查确保postgresql15-server能正确链接到新安装的postgresql15-libs。若此处误用--force --nodeps安装 server 包会导致pg_ctl找不到libpq.so.5后续所有操作均失效。3.2 第二步初始化集群并固化配置initdb pg_hba.conf 锁定安装完成后不要直接 systemctl start。先以 postgres 用户初始化数据目录# 切换到 postgres 用户rpm 安装后已创建 sudo -u postgres /usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data \ --authpeer \ --encodingUTF8 \ --localeen_US.UTF-8 \ --wal-segsize16 # 修改 pg_hba.conf禁用所有外部连接只留本地 peer 认证 sudo -u postgres sed -i /^host/d /var/lib/pgsql/15/data/pg_hba.conf echo local all all peer | sudo -u postgres tee -a /var/lib/pgsql/15/data/pg_hba.conf echo host all all 127.0.0.1/32 trust | sudo -u postgres tee -a /var/lib/pgsql/15/data/pg_hba.conf参数说明--authpeer强制本地 Unix socket 使用操作系统用户认证规避密码配置环节--wal-segsize16将 WAL 段大小设为 16MB默认 16MB但显式声明可避免某些国产内核下 mmap 失败pg_hba.conf中删除所有host行后只添加两条规则第一条local允许psql本地免密连接第二条host允许psql -h 127.0.0.1测试 TCP 连接。这是离线环境最安全的初始配置后续再根据等保要求逐步放开。3.3 第三步systemd 服务加固与自愈配置TimeoutSec Restarton-failurePGDG 提供的postgresql-15.service文件缺少生产环境必需的健壮性参数。需手动编辑# 备份原 service 文件 cp /usr/lib/systemd/system/postgresql-15.service /usr/lib/systemd/system/postgresql-15.service.bak # 添加关键自愈参数 cat /usr/lib/systemd/system/postgresql-15.service EOF [Service] TimeoutSec120 Restarton-failure RestartSec10 StartLimitIntervalSec600 StartLimitBurst5 EnvironmentPGDATA/var/lib/pgsql/15/data EOF # 重载 systemd 配置离线环境无需 daemon-reload因 service 文件已存在 systemctl enable postgresql-15逻辑说明TimeoutSec120解决pg_ctl start在慢盘如 SATA HDD上超时问题Restarton-failureRestartSec10实现进程崩溃后 10 秒自动重启StartLimit*参数防止服务反复失败导致 systemd 拒绝启动。EnvironmentPGDATA...是关键——它让systemctl start postgresql-15无需依赖/var/lib/pgsql/.bash_profile中的环境变量彻底消除因 shell profile 加载失败导致的启动异常。这是离线环境服务可靠性的基石。3.4 第四步首次启动验证与端口监听确认绕过 pg_ctl 的等待陷阱直接systemctl start postgresql-15后不要用pg_ctl status它在离线环境常因找不到postmaster.pid路径而误报。改用以下三重验证# 1. 检查 systemd 状态必须为 active (running) systemctl status postgresql-15 | grep Active: # 2. 检查 postmaster 进程是否存在pid 文件位置固定 ls -l /var/lib/pgsql/15/data/postmaster.pid ps aux | grep postgres:.*cluster | grep -v grep # 3. 验证端口监听PostgreSQL 默认 5432非 5433 ss -tlnp | grep :5432 | grep postgres # 正常输出示例LISTEN 0 128 *:5432 *:* users:((postgres,pid12345,fd6))避坑点pg_ctl start默认等待 60 秒确认服务启动但在离线环境尤其机械硬盘initdb 后首次启动可能耗时 80 秒导致pg_ctl报waiting for server to start.... stopped waiting。而systemctl start由 systemd 管理其TimeoutSec已设为 120 秒且启动后立即返回不阻塞 shell。因此离线安装必须用systemctl启动而非pg_ctl。4. 离线安装的五大致命坑现象、原因、解决一条都不能跳离线安装 PostgreSQL 最容易翻车的不是技术本身而是环境细节的连锁反应。以下是我在 200 台离线服务器上踩过的五个高频坑每一条都附带可复现的现象、根因定位方法和一招解决的命令4.1 现象systemctl start postgresql-15后状态为activating (start)持续 2 分钟然后变为failed原因systemd 无法读取/var/lib/pgsql/15/data/postgresql.conf中的unix_socket_directories路径权限。默认值为/var/run/postgresql但该目录在最小化系统中不存在且 postgres 用户无权创建。解决# 创建 socket 目录并赋权 mkdir -p /var/run/postgresql chown postgres:postgres /var/run/postgresql chmod 2775 /var/run/postgresql # 修改配置临时方案长期应改 unix_socket_directories /tmp sed -i s|^#unix_socket_directories .*|unix_socket_directories /tmp|g /var/lib/pgsql/15/data/postgresql.conf4.2 现象psql -U postgres报错FATAL: role postgres does not exist原因initdb 时未指定-U参数默认创建的 superuser 是initdb执行者即当前 shell 用户而非postgres。在离线环境sudo -u postgres initdb会因 postgres 用户 home 目录权限问题失败。解决# 以 root 执行 initdb 并显式指定 owner /usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data \ --authpeer \ --encodingUTF8 \ --localeen_US.UTF-8 \ -U postgres # 然后 chown -R postgres:postgres /var/lib/pgsql/15/data4.3 现象pg_ctl start报错could not identify systems clock source原因某些国产 CPU如飞腾 D2000内核未启用CONFIG_HIGH_RES_TIMERS导致 PostgreSQL 15 的clock_gettime(CLOCK_MONOTONIC)调用失败。解决# 降级到 PostgreSQL 14兼容性更好 # 或在 postgresql.conf 中添加 echo log_timezone PRC /var/lib/pgsql/15/data/postgresql.conf echo timezone PRC /var/lib/pgsql/15/data/postgresql.conf # 并重启服务此为临时 workaround根本解需内核补丁4.4 现象psql -h 127.0.0.1 -U postgres连接超时但psql -U postgres本地连接正常原因postgresql.conf中listen_addresses默认为localhost但某些国产 OS 的/etc/hosts未将localhost解析为127.0.0.1导致 TCP 监听绑定失败。解决# 显式设置 listen_addresses sed -i s|^#listen_addresses .*|listen_addresses 127.0.0.1|g /var/lib/pgsql/15/data/postgresql.conf # 并确认 port 未被占用 netstat -tuln | grep :54324.5 现象pg_dump -U postgres template1 backup.sql报错could not connect to server: No such file or directory原因pg_dump默认尝试 Unix socket 连接但 socket 文件路径/var/run/postgresql/.s.PGSQL.5432不存在因unix_socket_directories指向/var/run/postgresql而该目录未创建。解决# 创建 socket 目录同 4.1 mkdir -p /var/run/postgresql chown postgres:postgres /var/run/postgresql # 或强制 pg_dump 使用 TCP pg_dump -h 127.0.0.1 -p 5432 -U postgres template1 backup.sql注意以上五坑中4.1 和 4.5 是关联性最强的——socket 目录缺失会导致所有依赖 Unix socket 的客户端工具psql、pg_dump、pg_restore集体失效。务必在 initdb 后、首次启动前先执行mkdir -p /var/run/postgresql chown postgres:postgres /var/run/postgresql这是离线安装的“后悔药”。5. 离线环境下的 PostgreSQL 可用性验证三类必测场景与自动化脚本安装完成不等于可用。在离线环境中必须用最小化、无外网依赖的方式验证 PostgreSQL 是否真正满足业务上线要求。我坚持执行以下三类验证每类都配有可直接粘贴执行的 Bash 脚本无需 Python 或额外工具5.1 场景一基础连接与权限验证10 秒内完成目标确认postgres用户能登录、创建数据库、插入查询数据。脚本如下#!/bin/bash # save as /tmp/pg-test-basic.sh set -e # 1. 本地连接测试 sudo -u postgres psql -c SELECT version(); /dev/null 21 || { echo FAIL: local psql connection; exit 1; } echo PASS: local psql connection # 2. 创建测试库 sudo -u postgres psql -c CREATE DATABASE pgtest; /dev/null 21 || { echo FAIL: create database; exit 1; } echo PASS: create database # 3. 插入查询测试 sudo -u postgres psql -d pgtest -c CREATE TABLE t1(id int); INSERT INTO t1 VALUES(1); /dev/null 21 || { echo FAIL: insert data; exit 1; } COUNT$(sudo -u postgres psql -d pgtest -t -c SELECT COUNT(*) FROM t1;) if [ $COUNT 1 ]; then echo PASS: insert and select else echo FAIL: select returned $COUNT exit 1 fi # 4. 清理 sudo -u postgres psql -c DROP DATABASE pgtest; /dev/null 21 echo ✅ All basic tests passed执行方式chmod x /tmp/pg-test-basic.sh /tmp/pg-test-basic.sh。该脚本全程使用sudo -u postgres不依赖环境变量且所有输出重定向到/dev/null仅在失败时打印错误——这是离线巡检脚本的核心设计原则静默成功显式失败。5.2 场景二TCP 连接与防火墙穿透验证适配等保三级目标验证业务系统能通过 IP:Port 连接数据库且防火墙策略生效。脚本需检测两个层面PostgreSQL 层ss -tlnp | grep :5432确认监听OS 层iptables -L INPUT -n | grep 5432确认放行规则等保要求仅允许业务 IP 段访问。#!/bin/bash # save as /tmp/pg-test-tcp.sh set -e # 检查 PostgreSQL 是否监听 5432 if ! ss -tlnp | grep :5432 | grep -q postgres; then echo FAIL: PostgreSQL not listening on 5432 exit 1 fi echo PASS: PostgreSQL listening on 5432 # 检查 iptables 是否放行 5432等保三级要求白名单 if ! iptables -L INPUT -n | grep -q dpt:5432; then echo WARN: iptables rule for 5432 not found (may be disabled) # 若防火墙关闭需记录为 audit observation else echo PASS: iptables rule exists for 5432 fi # 本地 TCP 连接测试模拟业务侧 if ! psql -h 127.0.0.1 -U postgres -c SELECT 1; /dev/null 21; then echo FAIL: TCP connection failed exit 1 fi echo PASS: TCP connection from localhost echo ✅ TCP connectivity verified参数说明iptables -L INPUT -n使用-n参数避免 DNS 解析离线环境无 DNS直接显示 IP 和端口数字。等保审计报告中此项必须截图留存iptables -L INPUT -n输出证明 5432 端口有明确访问控制策略。5.3 场景三高可用预备验证WAL 归档与基础备份能力即使当前是单机离线环境也必须验证 WAL 归档与pg_basebackup能力——这是未来对接 Pacemaker 或 Patroni 的前提。验证分两步WAL 归档开关测试修改postgresql.conf启用archive_mode on检查pg_start_backup()是否成功基础备份测试执行pg_basebackup到本地目录验证 tar 包完整性。#!/bin/bash # save as /tmp/pg-test-backup.sh set -e # 创建归档目录 mkdir -p /var/lib/pgsql/15/archive chown postgres:postgres /var/lib/pgsql/15/archive # 启用 archive_mode临时修改不影响生产配置 sudo -u postgres sed -i s|^#archive_mode .*|archive_mode on|g /var/lib/pgsql/15/data/postgresql.conf sudo -u postgres sed -i s|^#archive_command .*|archive_command cp %p /var/lib/pgsql/15/archive/%f|g /var/lib/pgsql/15/data/postgresql.conf # 重启服务使配置生效 systemctl restart postgresql-15 # 测试 pg_start_backup生成 backup_label if ! sudo -u postgres psql -c SELECT pg_start_backup(test);; then echo FAIL: pg_start_backup failed exit 1 fi echo PASS: pg_start_backup succeeded # 执行基础备份不压缩便于离线验证 sudo -u postgres pg_basebackup -D /tmp/pg_backup_test -Ft -z -P # 验证备份包解压并检查 PG_VERSION if ! tar -tf /tmp/pg_backup_test/base.tar.gz | grep PG_VERSION /dev/null; then echo FAIL: backup tar missing PG_VERSION exit 1 fi echo PASS: base backup created and verified # 清理 rm -rf /tmp/pg_backup_test /var/lib/pgsql/15/archive/* sudo -u postgres sed -i s|^archive_mode on|#archive_mode off|g /var/lib/pgsql/15/data/postgresql.conf sudo -u postgres sed -i s|^archive_command .*|#archive_command |g /var/lib/pgsql/15/data/postgresql.conf systemctl restart postgresql-15 echo ✅ Backup capability verified关键点pg_basebackup -Ft -z生成.tar.gz包而非目录格式——这是离线环境唯一可安全传输的备份形态U盘拷贝、光盘刻录。tar -tf命令无需解压即可验证包内文件结构完全离线可用。我习惯把此脚本放入/usr/local/bin/pg-offline-check.sh每次交付前运行一次作为验收交付物的一部分。6. 我的离线安装 checklist一份写在 vim 里的 12 行备忘录做完上面所有步骤别急着交差。我在每台离线服务器上都会打开 vim新建一个/root/pg-offline-checklist.md手敲 12 行检查项。这不是形式主义而是把“离线”二字钉死在每一个可验证的原子动作上。这份 checklist 已伴随我走过 43 个信创项目从未因疏漏导致返工# PostgreSQL 离线安装终验 checklist2024.06 - [x] RPM 包 SHA256 与官网 sha256sum.txt 逐行比对一致 - [x] rpm -q postgresql15-server postgresql15-libs 返回版本号无 (not installed) - [x] locale -a | grep en_US.utf8 有输出 - [x] /var/run/postgresql 目录存在属主为 postgres:postgres - [x] systemctl status postgresql-15 显示 active (running)且 Loaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled) - [x] ss -tlnp | grep :5432 输出含 postgres 进程 - [x] sudo -u postgres psql -c SELECT 1; 返回 1 - [x] sudo -u postgres psql -h 127.0.0.1 -c SELECT 1; 返回 1 - [x] pg_lsclusters若安装了 pg_wrapper显示 15/main online - [x] /var/lib/pgsql/15/data/pg_hba.conf 中仅有 2 条规则local peer host trust - [x] /var/lib/pgsql/15/data/postgresql.conf 中 listen_addresses 127.0.0.1 且 port 5432 - [x] /tmp/pg-test-basic.sh 全部 PASS无 FAIL 输出为什么是 12 行因为少于 10 行易遗漏关键项多于 15 行难以坚持执行。每一项都对应一个ls、grep、psql或systemctl命令10 秒内可验证。我从不信任记忆只信任 vim 里打勾的瞬间——当第 12 个[x]出现在屏幕上我才敢在交付单上签字。希望帮到你。本文还有配套的精品资源点击获取
返回列表