所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
Linux 管理

如何在Debian上安装PostgreSQL:完整的分步指南

PostgreSQL 是世界上最强大的开源关系型数据库管理系统(RDBMS)之一。以其可靠性、可扩展性和严格的 SQL 合规性著称,它是开发人员、数据工程师和系统管理员运行生产工作负载的首选数据库引擎。无论您是在构建 Web 应用程序、数据仓库还是后端 API,PostgreSQL 都能提供您所需的性能和灵活性。

本综合指南将带您逐步完成在基于 Debian 的系统上安装和配置 PostgreSQL 的每个步骤——从初始软件包安装到远程访问配置和数据库管理。如果您在 VPS Hosting 方案上运行工作负载,本指南完全适用于您的环境。

前提条件

在开始之前,请确保您具备:

  • 一台 Debian 11(Bullseye)或 Debian 12(Bookworm)服务器
  • 具有 sudo 权限的用户账户
  • 对服务器的 SSH 访问权限
  • 稳定的网络连接

步骤 1:更新系统软件包列表

在安装任何新软件之前,最佳做法是同步软件包索引并升级所有过时的软件包。这可确保兼容性并降低依赖冲突的风险。

打开终端或通过 SSH 连接到您的服务器并运行:

sudo apt update
sudo apt upgrade -y
  • apt update 从已配置的软件源刷新本地软件包索引。
  • apt upgrade 安装所有当前已安装软件包的最新版本。

升级完成后,您的 Debian 系统即可进行全新的 PostgreSQL 安装。

步骤 2:在 Debian 上安装 PostgreSQL

PostgreSQL 可直接从官方 Debian 软件源获取,使安装过程简单可靠。运行以下命令:

sudo apt install postgresql postgresql-contrib -y

以下是每个软件包提供的功能:

软件包描述
postgresqlPostgreSQL 核心数据库服务器
postgresql-contrib通常与 PostgreSQL 一起使用的附加实用程序、扩展和工具

安装过程会自动创建名为 postgres 的系统用户,初始化默认数据库集群,并将 PostgreSQL 注册为系统服务。

步骤 3:验证 PostgreSQL 安装

安装完成后,PostgreSQL 应自动启动。验证服务是否处于活动运行状态:

sudo systemctl status postgresql

您应该看到类似以下的输出:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
     Active: active (running) since ...

如果 PostgreSQL 未运行,请手动启动它:

sudo systemctl start postgresql

确保 PostgreSQL 在每次服务器重启时自动启动:

sudo systemctl enable postgresql

这在云服务器和 VPS Hosting 环境中尤为重要,因为在维护窗口期间可能会发生重启。

步骤 4:基本 PostgreSQL 配置

PostgreSQL 使用基于角色的身份验证模型。安装后,会创建一个名为 postgres 的默认超级用户角色。本节介绍如何访问 PostgreSQL shell、创建角色和设置数据库。

4.1 切换到 PostgreSQL 系统用户

切换到 postgres 系统用户以获取管理员访问权限:

sudo -i -u postgres

现在打开 PostgreSQL 交互式终端:

psql

您将看到 PostgreSQL 提示符:

psql (15.x)
Type "help" for help.

postgres=#

在此处,您可以执行 SQL 命令、管理角色和管理数据库。

4.2 创建新的 PostgreSQL 角色(用户)

PostgreSQL 通过角色管理访问权限。要创建具有安全密码的新角色:

CREATE USER your_username WITH PASSWORD 'your_strong_password';

your_usernameyour_strong_password 替换为您所需的凭据。

要向此角色授予超级用户权限(在生产环境中请谨慎使用):

ALTER USER your_username WITH SUPERUSER;

完成后,退出 psql 提示符:

q

4.3 创建新数据库

在仍以 postgres 系统用户身份登录的情况下,创建新数据库:

createdb your_database_name

将数据库的所有权分配给您刚刚创建的用户:

psql
ALTER DATABASE your_database_name OWNER TO your_username;
q

这确保 your_usernameyour_database_name 拥有完全控制权,而无需超级用户访问权限来执行日常操作。

步骤 5:配置远程访问(可选)

默认情况下,PostgreSQL 仅接受来自 localhost127.0.0.1)的连接。如果您的应用程序服务器或开发机器单独托管——例如,在 Dedicated Servers 方案上——您需要启用远程访问。

> ⚠️ 安全警告:向远程连接开放 PostgreSQL 会增加您的攻击面。请始终使用强密码,将访问限制为已知 IP 范围,并考虑使用 SSL 加密连接。

5.1 修改 PostgreSQL 配置文件

打开主 PostgreSQL 配置文件。将 15 替换为您已安装的版本号:

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

找到以下行:

#listen_addresses = 'localhost'

取消注释并将值更改为接受所有接口上的连接:

listen_addresses = '*'

要将访问限制为特定 IP 地址:

listen_addresses = '192.168.1.100'

保存文件并退出(Ctrl+X,然后 Y,再 Enter)。

5.2 修改客户端身份验证文件

接下来,编辑 pg_hba.conf 文件以定义允许连接的主机:

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

在文件底部添加以下行,以允许使用密码身份验证从任何 IP 地址进行连接:

host    all             all             0.0.0.0/0               md5

为了更严格的安全性,将 0.0.0.0/0 替换为特定 IP 范围,例如:

host    all             all             203.0.113.0/24          md5

保存并退出文件。

5.3 重启 PostgreSQL 以应用更改

sudo systemctl restart postgresql

5.4 开放防火墙端口(如适用)

如果您的服务器使用 ufw,请允许端口 5432 上的 PostgreSQL 流量:

sudo ufw allow 5432/tcp
sudo ufw reload

步骤 6:远程连接到 PostgreSQL

配置远程访问后,您可以从任何安装了 PostgreSQL 客户端的远程机器连接到您的 PostgreSQL 服务器。

在远程机器上安装 PostgreSQL 客户端:

sudo apt install postgresql-client -y

连接到远程 PostgreSQL 服务器:

psql -h your_server_ip -U your_username -d your_database_name

按如下方式替换占位符:

占位符描述
your_server_ip您的 PostgreSQL 服务器的公共 IP 地址
your_username您创建的 PostgreSQL 角色
your_database_name目标数据库的名称

系统将提示您输入在创建角色时设置的密码。

步骤 7:管理 PostgreSQL 数据库

安装和配置 PostgreSQL 后,您可以使用 psql shell 和内置命令行实用程序管理数据库。

7.1 列出所有数据库

psql 提示符内,运行:

l

这将显示服务器上的所有数据库,以及其所有者、编码和访问权限。

7.2 切换到不同的数据库

c your_database_name

7.3 列出当前数据库中的所有表

dt

7.4 备份 PostgreSQL 数据库

使用 pg_dump 实用程序创建逻辑备份:

pg_dump your_database_name > your_database_name_backup.sql

对于压缩备份(推荐用于大型数据库):

pg_dump -Fc your_database_name > your_database_name_backup.dump

7.5 恢复 PostgreSQL 数据库

从纯 SQL 备份恢复:

psql your_database_name < your_database_name_backup.sql

从压缩备份恢复:

pg_restore -d your_database_name your_database_name_backup.dump

定期备份是任何生产数据库策略的关键组成部分。如果您需要具有自动备份支持的托管托管环境,请考虑 AlexHost 的 Dedicated Servers,用于高可用性数据库部署。

步骤 8:保护您的 PostgreSQL 安装

对于任何暴露在互联网或共享托管环境中的数据库,安全加固至关重要。以下是关键最佳实践:

使用 SSL/TLS 进行加密连接

PostgreSQL 支持原生 SSL 连接。在 postgresql.conf 中启用 SSL:

ssl = on

您需要有效的 SSL 证书。AlexHost 提供 SSL Certificates 以保护您的服务器通信。

限制角色权限

遵循最小权限原则。仅向角色授予其实际需要的权限:

GRANT CONNECT ON DATABASE your_database_name TO your_username;
GRANT USAGE ON SCHEMA public TO your_username;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO your_username;

定期轮换密码

定期更新 PostgreSQL 角色密码:

ALTER USER your_username WITH PASSWORD 'new_strong_password';

监控 PostgreSQL 日志

PostgreSQL 日志位于:

/var/log/postgresql/

定期查看这些日志以检测未经授权的访问尝试或性能异常。

为 PostgreSQL 选择合适的托管环境

PostgreSQL 数据库的性能与底层基础设施的质量直接相关。以下是 AlexHost 托管选项针对数据库工作负载的快速比较:

托管类型最适合主要优势
VPS Hosting中小型应用程序专用资源,完整 root 访问权限
Dedicated Servers高流量生产数据库最大性能和隔离性
GPU Hosting使用 PostgreSQL + pgvector 的 AI/ML 工作负载GPU 加速数据处理

对于大多数 Web 应用程序和开发环境,配备 NVMe SSD 存储的 VPS 提供了性能与成本效益的绝佳平衡。

结论

在 Debian 上安装 PostgreSQL 是一个简单的过程,按照正确的步骤操作只需几分钟。在本指南中,您已学会如何:

  • 更新您的 Debian 系统并从官方软件源安装 PostgreSQL
  • 验证服务状态并启用自动启动
  • 创建具有适当所有权的角色和数据库
  • 使用 postgresql.confpg_hba.conf 安全配置远程访问
  • 从远程机器连接到 PostgreSQL
  • 使用 psql 命令和备份实用程序管理数据库
  • 应用基本安全加固措施

无论您是在部署小型开发环境还是生产级数据库服务器,AlexHost 的基础设施都能为您的 PostgreSQL 工作负载提供所需的可靠性、速度和安全性。立即探索 VPS Hosting 方案,开始使用完全托管的高性能环境。