在阿里云轻量应用服务器(Lightweight Application Server)上安装和配置 PostgreSQL,推荐使用官方提供的 一键部署模板 或 手动安装 + 安全加固。以下是详细步骤:
✅ 方法一:使用阿里云控制台“一键部署”(推荐新手)
步骤:
- 登录 阿里云控制台
- 进入「轻量应用服务器」→ 选择你的实例 → 点击 「重装系统」 或 「创建新实例」
- 在镜像选择页面,搜索 “PostgreSQL”,会看到类似:
Alibaba Cloud Linux 3 (64-bit)+PostgreSQL 15- 或
Ubuntu 22.04+PostgreSQL 14/15
- 选择含 PostgreSQL 的镜像 → 完成创建
- 等待实例启动后,通过 远程连接工具(如 SSH、阿里云终端)登录
✅ 优点:开箱即用,已预装依赖、基础配置、防火墙规则
⚠️ 注意:默认密码需查看控制台“重置密码”或日志中生成的初始密码(部分镜像会在/root/.bash_history或/var/log/postgresql.log中提示)
✅ 方法二:手动安装 PostgreSQL(适合自定义需求)
以下以 Alibaba Cloud Linux 3 / CentOS Stream 9 为例(Ubuntu 命令略有不同,文末附对比)。
1. 更新系统并安装依赖
sudo dnf update -y
sudo dnf install -y yum-utils
2. 添加 PostgreSQL 官方 YUM 源(以 PG 15 为例)
# 下载并导入 GPG 密钥
curl -fsSL https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm | sudo rpm -ivh
# 禁用默认 repo,启用 pgdg 源
sudo dnf config-manager --set-disabled pgdg-common
sudo dnf config-manager --set-enabled pgdg15
🔍 版本说明:
pgdg15→ PostgreSQL 15pgdg14→ PostgreSQL 14- 可访问 https://www.postgresql.org/download/linux/redhat/ 确认最新源
3. 安装 PostgreSQL 及扩展
sudo dnf install -y postgresql-server postgresql-contrib
4. 初始化数据库集群
sudo /usr/pgsql-15/bin/postgresql-setup initdb
📌 路径可能因版本而异:
/usr/pgsql-XX/bin/,可用ls /usr/pgsql*确认。
5. 启动并设置开机自启
sudo systemctl enable --now postgresql-15
sudo systemctl status postgresql-15
6. 配置远程访问(关键!)
(1)修改 postgresql.conf
sudo vi /var/lib/pgsql/15/data/postgresql.conf
找到并修改:
listen_addresses = '*' # 允许监听所有 IP
port = 5432 # 默认端口
(2)修改 pg_hba.conf 允许远程连接
sudo vi /var/lib/pgsql/15/data/pg_hba.conf
在文件末尾添加(根据安全需求调整):
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# 或更严格:仅允许特定 IP(推荐生产环境)
# host all all <你的公网IP>/32 md5
(3)重启服务生效
sudo systemctl restart postgresql-15
🔐 安全加固建议(必做!)
1. 修改默认密码(postgres 用户)
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'your_strong_password';
q
2. 配置阿里云安全组(防火墙)
- 登录阿里云控制台 → 轻量应用服务器 → 实例详情 → 网络与安全 → 安全组
- 添加入方向规则:
- 协议:TCP
- 端口:
5432 - 授权对象:
0.0.0.0/0(测试用)或 仅限你的公网 IP(生产强烈建议) - 优先级:高
3. 启用 SSL(可选但推荐)
生成证书并配置 ssl = on,详见官方文档:
👉 https://www.postgresql.org/docs/current/runtime-config-connection.html#RUNTIME-CONFIG-CONNECTION-SSL
4. 定期备份
# 每日自动备份脚本示例(crontab)
echo "0 2 * * * /usr/pgsql-15/bin/pg_dumpall -U postgres > /backup/pg_backup_$(date +%Y%m%d).sql" | crontab -
🐧 Ubuntu 22.04 快速参考(若你用的是 Ubuntu)
# 安装
sudo apt update
sudo apt install postgresql postgresql-contrib
# 启动
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 配置文件路径
/etc/postgresql/14/main/postgresql.conf
/etc/postgresql/14/main/pg_hba.conf
# 修改密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpass';"
🔍 验证安装是否成功
# 本地连接测试
sudo -u postgres psql -c "l"
# 远程连接测试(从本机)
psql -h <服务器公网IP> -U postgres -p 5432
# 输入密码后应能进入命令行
❗ 常见问题排查
| 问题 | 解决方案 |
|---|---|
Connection refused |
检查 listen_addresses、pg_hba.conf、安全组规则 |
password authentication failed |
确认 md5/scram-sha-256 与客户端认证方式匹配;检查 .pgpass 文件权限 |
| 磁盘空间不足 | df -h 查看 /var/lib/pgsql;清理旧日志或迁移数据目录 |
| 无法写入日志 | 检查 /var/lib/pgsql/15/data/log 权限:chown -R postgres:postgres log |
需要我为你提供:
- 自动化部署 Shell 脚本?
- Docker 方式部署 PostgreSQL?
- 配合 phpMyAdmin/pgAdmin 可视化管理?
- 高可用架构(主从复制)方案?
欢迎告诉我你的具体场景,我可以进一步定制方案 😊
云知识