PostgreSQL 阿里云安装实操
PostgreSQL 15 在 Alibaba Cloud Linux 3 上的二进制编译安装全流程指南(绝对路径版)
系统环境:Alibaba Cloud Linux 3 (Pro Edition)
内核版本:兼容 RHEL 8 (platform:al8)
PostgreSQL 版本:15.10
安装方式:源码编译安装
安装目录:/usr/local/pgsql-15
数据目录:/data/pgsql-15
管理用户:postgres
管理员密码:16pgsql(请务必在生产环境中修改为强密码)
📦 一、下载源码包
cd /usr/local/src
wget https://ftp.postgresql.org/pub/source/v15.10/postgresql-15.10.tar.gz
国内镜像加速(中科大源):
wget https://mirrors.ustc.edu.cn/postgresql/source/v15.10/postgresql-15.10.tar.gz
🛠️ 二、编译安装
1. 安装编译依赖
sudo yum install -y gcc make readline-devel zlib-devel
2. 解压源码
tar -zxvf postgresql-15.10.tar.gz
cd postgresql-15.10
3. 配置编译选项(指定安装目录)
./configure --prefix=/usr/local/pgsql-15
4. 编译并安装
make
sudo make install
5. 验证安装
ls /usr/local/pgsql-15/bin | grep -E "postgres|psql|initdb|pg_ctl"
应看到 postgres、psql、initdb、pg_ctl 等可执行文件。
👤 三、创建系统用户与数据目录
1. 创建 postgres 系统用户
sudo useradd postgres # 如果已存在,忽略即可
2. 创建数据目录并设置权限
sudo mkdir -p /data/pgsql-15
sudo chown -R postgres:postgres /data/pgsql-15
sudo chmod 755 /data/pgsql-15
🗄️ 四、初始化数据库
以 postgres 用户身份执行 initdb:
sudo -u postgres /usr/local/pgsql-15/bin/initdb -D /data/pgsql-15
成功输出示例:
Success. You can now start the database server using:
/usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 -l logfile start
🚀 五、启动数据库服务
启动服务(使用绝对路径)
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 -l /data/pgsql-15/logfile start
查看进程状态
ps aux | grep postgres
停止服务
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 stop
重启服务
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 restart
查看服务状态
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 status
🔐 六、设置管理员密码
sudo -u postgres /usr/local/pgsql-15/bin/psql -c "ALTER USER postgres WITH PASSWORD '16pgsql';"
密码策略建议:生产环境请使用强密码(大小写字母+数字+特殊符号)。
🌐 七、配置远程访问
1. 修改监听地址
编辑 postgresql.conf:
sudo -u postgres vi /data/pgsql-15/postgresql.conf
找到并修改:
#listen_addresses = 'localhost' → listen_addresses = '*'
或使用 sed 快速修改:
sudo -u postgres sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /data/pgsql-15/postgresql.conf
2. 添加访问控制规则
编辑 pg_hba.conf:
sudo -u postgres vi /data/pgsql-15/pg_hba.conf
在文件末尾添加:
host all all 0.0.0.0/0 scram-sha-256
或使用 echo 快速添加:
echo "host all all 0.0.0.0/0 scram-sha-256" | sudo -u postgres tee -a /data/pgsql-15/pg_hba.conf
3. 重启服务使配置生效
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 restart
4. 验证监听端口
sudo netstat -tlnp | grep 5432
正确结果应为:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 2761698/postgres
tcp6 0 0 :::5432 :::* LISTEN 2761698/postgres
🛡️ 八、防火墙与安全组配置
1. 阿里云安全组(必须)
在 ECS 控制台 → 安全组 → 配置规则:
- 协议端口:
TCP:5432 - 授权对象:建议填写你的本地公网 IP(
你的IP/32),不要使用0.0.0.0/0(生产环境风险极高)。
2. 服务器防火墙(可选)
# 检查防火墙状态
sudo systemctl status firewalld
# 如果开启,添加端口规则
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
📥 九、本地与外部连接测试
1. 本地连接测试
/usr/local/pgsql-15/bin/psql -U postgres -h 127.0.0.1 -p 5432 -d postgres -W
输入密码 16pgsql。
2. 外部连接测试(在另一台机器上)
psql -h 你的阿里云公网IP -U postgres -p 5432 -d postgres -W
3. 常用 SQL 测试
-- 查看版本
SELECT version();
-- 查看所有数据库
\l
-- 创建测试数据库
CREATE DATABASE testdb;
-- 切换到测试数据库
\c testdb;
-- 创建测试表
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(50));
-- 插入测试数据
INSERT INTO users (name) VALUES ('张三'), ('李四');
-- 查询数据
SELECT * FROM users;
📋 十、常用管理命令速查(绝对路径版)
| 操作 | 命令 |
|---|---|
| 启动服务 | sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 start |
| 停止服务 | sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 stop |
| 重启服务 | sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 restart |
| 查看状态 | sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 status |
| 进入 psql | /usr/local/pgsql-15/bin/psql -U postgres -d postgres |
| 修改密码 | ALTER USER postgres WITH PASSWORD '新密码'; |
| 创建用户 | CREATE USER 用户名 WITH PASSWORD '密码'; |
| 创建数据库 | CREATE DATABASE 数据库名 OWNER 用户名; |
| 授权 | GRANT ALL PRIVILEGES ON DATABASE 数据库名 TO 用户名; |
| 查看日志 | tail -f /data/pgsql-15/logfile |
🧹 十一、卸载与清理(如需)
1. 停止服务
sudo -u postgres /usr/local/pgsql-15/bin/pg_ctl -D /data/pgsql-15 stop
2. 删除安装目录
sudo rm -rf /usr/local/pgsql-15
3. 删除数据目录
sudo rm -rf /data/pgsql-15
4. 删除系统用户(可选)
sudo userdel postgres
⚠️ 注意事项
- 数据目录权限:初始化后,数据目录的所有者必须保持为
postgres:postgres,不要随意更改。 - 日志管理:日志文件
logfile会持续增长,建议配置日志轮转(如logrotate)。 - 密码安全:
16pgsql仅用于测试,生产环境请务必使用强密码。 - 备份策略:定期使用
pg_dump或pg_dumpall备份数据。 - 端口安全:5432 端口对外暴露时,务必限制访问 IP 范围。
- 绝对路径原则:本指南所有命令均使用绝对路径,避免因环境变量问题导致命令找不到。
📚 参考资料
文档版本:2.0(绝对路径版)
记录日期:2026-06-19
适用环境:Alibaba Cloud Linux 3 / RHEL 8 / CentOS 8 兼容系统
