linux部署postgresql远程访问需四步:加官方yum源、禁用系统自带模块、安装并初始化服务、配置postgresql.conf和pg_hba.conf及开放5432端口;缺一不可,否则远程连接失败。

直接装官方 YUM/APT 源的包,别碰系统自带的 postgresql(CentOS/RHEL 默认是 9.2,Ubuntu 18.04 是 10.6),版本太老、没维护、缺扩展、连 pg_dump 都可能不带。
用 YUM 安装(CentOS/RHEL/Rocky 7/8/9)
核心就四步:加源 → 装包 → 初始化 → 启服务。跳任何一步,systemctl start postgresql-16 都会失败或起不来。
- 先加官方仓库(用阿里镜像更稳):
sudo rpm -Uvh https://mirrors.aliyun.com/postgresql/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm - 禁用系统自带模块防冲突:
sudo dnf -qy module disable postgresql(RHEL 8+ 必做,否则yum install会报错) - 装服务端和工具:
sudo yum install -y postgresql16-server postgresql16-contrib(版本号写死,避免装错) - 初始化数据目录:
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb(路径不对或权限不对,initdb 会静默失败) - 启用并启动:
sudo systemctl enable postgresql-16 && sudo systemctl start postgresql-16
用 APT 安装(Ubuntu/Debian)
APT 方式省事,但默认不创建 postgres 用户密码,远程连不上;且 Ubuntu 22.04 自带的是 postgresql-14,想装 16 得手动加源。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 更新索引:
sudo apt-get update - 加官方源(否则只能装旧版):
echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list,再导入 GPG 密钥:wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - - 重更新:
sudo apt-get update - 装 16:
sudo apt-get install -y postgresql-16 postgresql-client-16 postgresql-contrib-16 - 服务自动启,但
postgres用户无密码,必须手动设:sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'xxx';"
改完配置才能远程连
装完只是本地能用,远程访问卡在三个地方:监听地址、认证规则、防火墙。少一个,psql -h 192.168.x.x -U postgres 就报 connection refused 或 no pg_hba.conf entry。
-
listen_addresses在/var/lib/pgsql/16/data/postgresql.conf里,默认是'localhost',得改成'localhost,192.168.1.100'或临时测试用'*' -
pg_hba.conf要追加一行:host all all 192.168.1.0/24 md5(注意位置:加在所有local规则之后,且不能被前面的reject拦住) - 改完必须 reload:
sudo systemctl reload postgresql-16(不是 restart,避免中断现有连接) - 防火墙放行:
sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload(Ubuntu 用ufw allow 5432)
源码编译只在特定场景下值得做
除非你要静态链接 OpenSSL、指定非标准端口编译进二进制、或离线部署,否则源码编译纯属增加故障点。常见坑包括:configure 找不到 readline-devel 报错、make install 后忘了设 PGHOME 环境变量、initdb 时权限不是 postgres:postgres 导致 data 目录初始化失败。
- 依赖要装全:
sudo yum groupinstall "Development Tools" && sudo yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel python3-devel gcc-c++ openssl-devel - 用户必须用
postgres(不能 root),data 目录 owner 必须是它:chown -R postgres:postgres /opt/pgsql/data -
./configure时加--prefix明确路径,否则make install默认装到/usr/local/pgsql,后续管理容易混乱
最容易被忽略的是 pg_hba.conf 的规则顺序和 reload 动作——很多人改了文件却没 reload,以为配置生效了;还有人把 host 规则加在了 local 规则前面,结果新规则根本没机会匹配。










