适用环境:TencentOS Server 3.3(基于 RHEL / CentOS 8)
安装版本:**PostgreSQL 18.x(官方 PGDG 仓库)**
⚠️ 系统自带 Python / 包不受影响,安全可回滚
一、清理旧仓库(如曾尝试安装过)
sudo rm -f /etc/yum.repos.d/pgdg*
sudo yum clean all
二、安装 PostgreSQL 官方 EL8 仓库 RPM
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
TencentOS 3.3 有时不会生成
.repo文件,下一步手动补写仓库配置
三、手动创建 PostgreSQL 18 YUM 仓库(关键步骤)
sudo tee /etc/yum.repos.d/pgdg18.repo > /dev/null << 'EOF'
[pgdg18]
name=PostgreSQL 18 for RHEL 8 - x86_64
baseurl=https://download.postgresql.org/pub/repos/yum/18/redhat/rhel-8-x86_64
enabled=1
gpgcheck=1
gpgkey=https://download.postgresql.org/pub/repos/yum/RPM-GPG-KEY-PGDG
module_hotfixes=1
EOF
刷新缓存:
sudo yum clean all
sudo yum makecache
验证仓库可用:
yum repolist enabled | grep pgdg
# 应看到 pgdg18
四、安装 PostgreSQL 18(跳过 GPG 校验防 404)
sudo yum install -y postgresql18-server postgresql18 --nogpgcheck
✅ 成功标志:
Installed:
postgresql18-18.4-2PGDG.rhel8.10.x86_64
postgresql18-libs-18.4-2PGDG.rhel8.10.x86_64
postgresql18-server-18.4-2PGDG.rhel8.10.x86_64
Complete!
五、初始化数据库
sudo /usr/pgsql-18/bin/postgresql-18-setup initdb
✅ 期望输出:
Initializing database ... OK
六、启动并设置开机自启
sudo systemctl enable postgresql-18
sudo systemctl start postgresql-18
sudo systemctl status postgresql-18
✅ 应看到:active (running)
七、验证安装
psql --version
# psql (PostgreSQL) 18.x
八、基础使用(首次登录)
su - postgres
psql
示例建库:
CREATE DATABASE testdb;
\q
exit
九、开启远程访问(可选 / 生产建议收紧)
1️⃣ 修改监听地址
sudo vi /var/lib/pgsql/18/data/postgresql.conf
listen_addresses = '*'
2️⃣ 修改认证规则
sudo vi /var/lib/pgsql/18/data/pg_hba.conf
追加:
host all all 0.0.0.0/0 md5
3️⃣ 重启
sudo systemctl restart postgresql-18
4️⃣ 防火墙 / 安全组
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
👉 同时在腾讯云控制台 → 安全组放行 TCP 5432
十、常见问题速查
| 问题 | 原因 | 解决 |
|---|---|---|
| 404 repomd.xml | TencentOS $releasever=3.3 | 手动写 pgdg18.repo(第三节) |
| No such file pgdg*.repo | RPM 未生成 repo | 按第三节手写 |
| GPG key 404 | 云环境拉不到公钥 | 使用 --nogpgcheck |
| pip: command not found | venv 未激活 | source venv/bin/activate |
✅ 一句话总结
TencentOS 3.3 用 EL8 仓库 → 手写 pgdg18.repo → --nogpgcheck 安装 → initdb → systemctl 启动