如何在腾讯轻量服务器上安装和配置PostgreSQL?

在腾讯轻量应用服务器(Lighthouse)上安装和配置 PostgreSQL 的步骤如下,以 Ubuntu 22.04/20.04 为例(CentOS 7/8 略有不同,文末附说明):


✅ 一、前置准备

  1. 登录轻量服务器
    ssh root@your-server-ip
  2. 更新系统包
    sudo apt update && sudo apt upgrade -y
  3. 确认系统架构与版本
    uname -m
    lsb_release -a

✅ 二、安装 PostgreSQL

方法 A:使用官方源(推荐,获取最新稳定版)

1. 添加 PostgreSQL 官方软件源(Ubuntu)

# 安装依赖
sudo apt install -y curl gnupg2 ca-certificates lsb-release software-properties-common

# 导入 GPG 密钥
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /usr/share/keyrings/postgresql.gpg

# 添加仓库(以 PG 16 为例,可按需替换为 15/14 等)
echo "deb [signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list > /dev/null

# 再次更新并安装
sudo apt update
sudo apt install -y postgresql-16 postgresql-contrib-16

💡 若需其他版本,将 postgresql-16 改为对应版本(如 postgresql-15),并确保 .list 中版本号一致。

2. 启动并设置开机自启

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

方法 B:使用系统默认源(适合快速部署,但版本较旧)

sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

✅ 三、基础配置与初始化

1. 切换至 postgres 用户并进入 shell

sudo -i -u postgres
psql

2. 创建数据库与管理员(可选但推荐)

-- 创建新用户(替代默认的 postgres 账户更安全)
CREATE USER myuser WITH PASSWORD 'StrongPassword123!';

-- 创建数据库并授权
CREATE DATABASE mydb OWNER myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

-- 退出
q
exit

🔐 建议修改默认密码强度,避免弱口令。


3. 配置监听地址(允许远程连接)

编辑配置文件:

sudo nano /etc/postgresql/16/main/postgresql.conf

找到并修改:

listen_addresses = '*'          # 监听所有网卡;或指定 IP 如 '0.0.0.0'
port = 5432                     # 默认端口,勿随意更改

⚠️ 注意:路径中的 16 需与你安装的版本一致(如 postgresql/15/main)。


4. 配置客户端认证(pg_hba.conf)

sudo nano /etc/postgresql/16/main/pg_hba.conf

在文件末尾添加(示例:允许特定 IP 段连接):

# IPv4 local connections:
host    all             all             192.168.0.0/16            md5

# IPv6 local connections:
host    all             all             ::1/128                   md5

# 允许任意公网 IP(谨慎!生产环境建议限制 IP)
# host    all             all             0.0.0.0/0                 md5

✅ md5 表示密码认证;如需 SSL 加密,可改用 scram-sha-256 + 配置 SSL。


✅ 四、防火墙与安全组配置(关键!)

1. 本地防火墙(UFW)

sudo ufw allow 5432/tcp
sudo ufw reload

2. 腾讯云控制台安全组

  • 登录 腾讯云轻量应用服务器控制台
  • 进入实例 → 网络 → 安全组
  • 添加入站规则:
    • 协议:TCP
    • 端口:5432
    • 来源:0.0.0.0/0(测试用)或指定 IP/CIDR(生产推荐)

🛡️ 强烈建议仅开放必要 IP,避免暴露给全网。


✅ 五、验证安装与远程连接

1. 本地测试

psql -U myuser -d mydb -h localhost

2. 从本机远程连接(Windows/macOS/Linux)

使用客户端工具(如 pgAdmin、DBeaver、Navicat 或 psql 命令行):

  • Host: your-server-ip
  • Port: 5432
  • Database: mydb
  • Username: myuser
  • Password: StrongPassword123!

❗ 首次连接前请确保:

  • listen_addresses 已设为 * 或对应 IP
  • pg_hba.conf 允许该 IP
  • 安全组已放行 5432 端口

✅ 六、进阶优化建议(生产环境)

项目 建议
备份 使用 pg_dump + cron 定时备份;或开启 WAL 归档
性能 调整 shared_buffers、work_mem、effective_cache_size(根据内存比例)
监控 安装 pg_stat_statements 扩展分析慢查询
SSL 启用 TLS 加密连接(参考 PostgreSQL SSL 文档)
自动重启 已在 systemd 中启用,配合云监控告警更稳妥

示例备份脚本(/opt/backup_pg.sh):

#!/bin/bash
DATE=$(date +%F_%H%M%S)
BACKUP_DIR="/opt/backups"
mkdir -p $BACKUP_DIR
pg_dump -U myuser mydb > "$BACKUP_DIR/mydb_$DATE.sql"
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete

添加至 crontab:0 2 * * * /opt/backup_pg.sh


🐧 CentOS 7/8 简要差异

# 安装(EPEL + PostgreSQL 官方源)
sudo yum install -y epel-release
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum config-manager --set-enabled pgdg16
sudo yum install -y postgresql16-server postgresql16-contrib

# 初始化 & 启动
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable --now postgresql-16

# 配置文件路径:
# postgresql.conf: /var/lib/pgsql/16/data/postgresql.conf
# pg_hba.conf:     /var/lib/pgsql/16/data/pg_hba.conf

需要我提供:

  • Docker 方式部署 PostgreSQL?
  • 一键脚本自动化安装?
  • 高可用(主从复制)配置指南?

欢迎告诉我你的具体场景,我可进一步定制方案!