在阿里云 ECS 上装 PostgreSQL,别整那些虚的。直接上干货,分两种情况:你想省事用官方镜像/一键安装,或者你想自己编译/包管理安装以掌握控制权。
大多数生产环境或学习用途,推荐用 APT/YUM 源安装(Debian/Ubuntu 用 apt,CentOS/RHEL 用 yum/dnf),比从源码编译稳定得多,也省得调依赖。
第一步:选对操作系统镜像
去阿里云控制台创建实例时,系统镜像选带 PostgreSQL 预装的“软件镜像”,还是纯 Linux 发行版?
- 新手/快速体验:选“软件镜像”里的 PostgreSQL 专用镜像。进去就能用,但定制性差。
- 推荐/生产环境:选标准的 Ubuntu 20.04/22.04 或 CentOS 7/8。这样你能完全控制版本、配置和后续升级。
下面以 Ubuntu 22.04 + PostgreSQL 15 为例(CentOS 逻辑类似,命令换一下就行)。
第二步:安装 PostgreSQL
SSH 连进服务器,执行:
# 更新软件源
sudo apt update
# 安装 PostgreSQL 及其常用工具
sudo apt install postgresql postgresql-contrib -y
安装完成后,PostgreSQL 服务通常会自动启动。检查状态:
sudo systemctl status postgresql
如果没启动,手动起:
sudo systemctl start postgresql
sudo systemctl enable postgresql # 设置开机自启
第三步:配置远程访问(关键!)
默认情况下,PostgreSQL 只监听 localhost,网络连不上。你需要改两个文件:
1. 修改 postgresql.conf 允许监听所有 IP
sudo nano /etc/postgresql/15/main/postgresql.conf
找到这一行:
#listen_addresses = 'localhost'
改成:
listen_addresses = '*'
注意:版本号可能不同,比如
14、16,看你的实际路径。
2. 修改 pg_hba.conf 允许特定 IP 或 CIDR 连接
sudo nano /etc/postgresql/15/main/pg_hba.conf
在文件末尾添加一行,允许某个网段或特定 IP 连接。例如,允许你本地的 IP 192.168.1.100 连接:
host all all 192.168.1.100/32 md5
如果你想让任何人能连(不推荐用于生产),可以用 0.0.0.0/0,但务必设强密码。
安全提示:不要用
trust,用md5或scram-sha-256。
第四步:重启服务使配置生效
sudo systemctl restart postgresql
验证是否监听 5432 端口:
sudo netstat -tlnp | grep 5432
# 或者
ss -tlnp | grep 5432
应该看到 0.0.0.0:5432 或 [::]:5432。
第五步:阿里云安全组放行
这是最容易忽略的一步!即使你配好了 PG,阿里云防火墙也会拦着。
- 登录阿里云控制台 → ECS 实例 → 找到你的实例 → “更多” → “网络和安全组” → “安全组配置”。
- 点击你绑定的安全组 ID → “配置规则” → “入方向” → “手动添加”。
- 协议类型选 TCP,端口范围填 5432,授权对象填你的公网 IP(如
1.2.3.4/32)或整个互联网0.0.0.0/0(不推荐)。 - 保存。
第六步:测试连接
在你本地电脑终端(Windows/Mac/Linux)执行:
psql -h <你的ECS公网IP> -U postgres -W
输入密码后如果能进入 postgres=# 提示符,说明搞定。
如果连不上,查日志:
sudo tail -f /var/log/postgresql/postgresql-15-main.log,常见错误是权限被拒或地址不对。
常见问题 & 避坑指南
-
默认用户是
postgres,不是root
数据库里没有root用户。初始密码为空,但为了安全,建议立即设置密码:sudo -u postgres psql password postgres -
防火墙冲突
Ubuntu 可能有ufw,CentOS 有firewalld。确保它们也放行了 5432:# Ubuntu sudo ufw allow 5432/tcp # CentOS sudo firewall-cmd --permanent --add-port=5432/tcp sudo firewall-cmd --reload -
性能优化(生产环境必做)
默认配置适合开发,不适合高并发。修改/etc/postgresql/15/main/postgresql.conf中的关键参数:shared_buffers = 256MB # 设为内存的 25% 左右 effective_cache_size = 1GB # 设为内存的 50-75% work_mem = 4MB # 每个查询操作可用的内存 maintenance_work_mem = 64MB # VACUUM 等维护操作可用内存 max_connections = 100 # 根据业务调整,别开太大改完重启服务。
-
备份策略
别指望云盘快照是唯一保障。用pg_dump定期导出 SQL 文件,存到 OSS 或其他地方:pg_dump -U postgres -h localhost mydb > backup.sql
总结
- 装:
apt install postgresql - 配:改
postgresql.conf监听*,改pg_hba.conf加白名单 - 开:阿里云安全组放行 5432
- 测:本地
psql -h <公网IP>
就这么简单。别折腾源码编译,除非你有特殊需求。生产环境记得加固密码、限制 IP、定期备份。
CLOUD云计算