潜心修战潜心修战
首页
Get Started
产品
运维
前端
后端
系统网络
  • foo
  • bar
  • FOO
Gitee
首页
Get Started
产品
运维
前端
后端
系统网络
  • foo
  • bar
  • FOO
Gitee
  • PostgreSQL 阿里云安装实操

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

⚠️ 注意事项

  1. 数据目录权限:初始化后,数据目录的所有者必须保持为 postgres:postgres,不要随意更改。
  2. 日志管理:日志文件 logfile 会持续增长,建议配置日志轮转(如 logrotate)。
  3. 密码安全:16pgsql 仅用于测试,生产环境请务必使用强密码。
  4. 备份策略:定期使用 pg_dump 或 pg_dumpall 备份数据。
  5. 端口安全:5432 端口对外暴露时,务必限制访问 IP 范围。
  6. 绝对路径原则:本指南所有命令均使用绝对路径,避免因环境变量问题导致命令找不到。

📚 参考资料

  • PostgreSQL 官方文档
  • PostgreSQL 源码下载
  • Alibaba Cloud Linux 3 官方文档

文档版本:2.0(绝对路径版)
记录日期:2026-06-19
适用环境:Alibaba Cloud Linux 3 / RHEL 8 / CentOS 8 兼容系统

Edit this page
最近更新:: 2026/6/19 22:21
Contributors: haoyong3