在云服务器上如何手动安装PostgreSQL数据库?

下面以常见的 Linux 发行版(Ubuntu/Debian、CentOS/RHEL)为例,说明在云服务器上手动安装 PostgreSQL 的基本步骤。你可以根据实际系统版本做相应调整。


一、通用准备

  1. 登录云服务器
    使用 SSH 登录:

    ssh username@your_server_ip
  2. 更新软件包列表

    • Ubuntu/Debian:
      sudo apt update && sudo apt upgrade -y
    • CentOS/RHEL / AlmaLinux / Rocky Linux:
      sudo yum install epel-release -y   # 如尚未安装 EPEL
      sudo yum update -y
  3. 确认系统架构与版本

    uname -a
    lsb_release -a        # Debian/Ubuntu
    cat /etc/os-release   # 通用

二、Ubuntu / Debian 上安装 PostgreSQL

1. 添加官方仓库(推荐)

sudo apt install curl ca-certificates gnupg -y
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | 
  sudo gpg --dearmor -o /usr/share/keyrings/postgresql-archive-keyring.gpg

创建源列表文件(以 Ubuntu 22.04 + PG 15 为例,版本号按需调整):

echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] 
http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | 
  sudo tee /etc/apt/sources.list.d/pgdg.list

然后更新并安装:

sudo apt update
sudo apt install postgresql-15 postgresql-contrib -y

postgresql-15 中的 15 是主版本号,可根据需要改为 1416 等。

2. 启动服务并设置开机自启

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

3. 初始化默认用户(postgres)

PostgreSQL 安装后会自动创建 postgres 系统用户和数据库超级用户。

进入 PostgreSQL shell:

sudo -u postgres psql

在提示符下可以执行一些基础操作,例如修改密码:

password postgres
q

退出后返回 shell。

4. 配置远程访问(可选但常见)

编辑配置文件:

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

找到并修改:

listen_addresses = '*'

再编辑认证配置:

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

在末尾添加一行(允许任意 IP 通过 md5 密码认证,生产环境建议限制 IP):

host    all             all             0.0.0.0/0               md5

或更严格一点,只允许特定网段:

host    all             all             192.168.1.0/24            md5

重启服务:

sudo systemctl restart postgresql

5. 检查端口是否监听

sudo ss -tlnp | grep 5432
# 或
netstat -tlnp | grep 5432

若未看到 0.0.0.0:5432:::5432,说明监听地址未正确配置。


三、CentOS / RHEL / AlmaLinux / Rocky Linux 上安装

1. 使用官方 YUM 仓库

sudo rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

根据你的系统版本选择对应 repo(示例为 EL9;如果是 EL7/8,请替换 URL 中的 EL-9)。

然后安装指定版本:

sudo dnf install postgresql-server postgresql-contrib -y

2. 初始化数据库集群

sudo /usr/bin/postgresql-setup initdb

启动并设置开机自启:

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

3. 修改密码与远程访问

进入 PostgreSQL:

sudo -u postgres psql
password postgres
q

编辑配置:

sudo vi /var/lib/pgsql/data/postgresql.conf

设置:

listen_addresses = '*'

编辑 pg_hba.conf(通常位于 /var/lib/pgsql/data/):

sudo vi /var/lib/pgsql/data/pg_hba.conf

在末尾添加:

host    all             all             0.0.0.0/0               md5

重启服务:

sudo systemctl restart postgresql

四、防火墙与安全组配置

1. 云服务器安全组(云厂商控制台)

在阿里云、腾讯云、AWS、华为云等控制台的“安全组”或“防火墙规则”中:

  • 添加入站规则:
    • 协议:TCP
    • 端口:5432
    • 来源:根据需要设置为 0.0.0.0/0(不推荐)或仅你的管理 IP / 业务网段。

2. 系统防火墙(firewalld / ufw)

  • Ubuntu (ufw):

    sudo ufw allow 5432/tcp
    sudo ufw reload
  • CentOS/RHEL (firewalld):

    sudo firewall-cmd --permanent --add-port=5432/tcp
    sudo firewall-cmd --reload

五、验证安装

从服务器本地测试:

sudo -u postgres psql -c "SELECT version();"

从另一台机器(确保防火墙已放行)测试连接:

psql -h your_server_ip -U postgres -d postgres -W

输入密码后若能进入命令行,则说明安装成功且远程可访问。


六、后续建议(简要)

  • 不要将 postgres 账户用于普通应用,建议为每个应用创建独立数据库和用户。
  • 定期备份:使用 pg_dump 或云厂商的快照功能。
  • 开启日志记录,监控慢查询和资源使用情况。
  • 如需高可用、读写分离、集群等,可在基础安装之上搭建 Patroni、Repmgr 等方案。

如果你告诉我:

  • 具体操作系统及版本(如 Ubuntu 22.04、CentOS 7 等)
  • 希望安装的 PostgreSQL 版本
  • 是否需要远程访问 / 是否已有安全组规则

我可以给出完全针对你环境的完整命令脚本(含注释)。

未经允许不得转载:CLOUD技术博 » 在云服务器上如何手动安装PostgreSQL数据库?