PostgreSQL 安装:一份全面的分步指南

通过这份全面的分步安装指南,释放 PostgreSQL 的强大功能。学习如何在 Linux (Debian/Ubuntu, RHEL/CentOS)、macOS 和 Windows 上成功设置 PostgreSQL。本文涵盖了初始设置、关键的安装后配置(如用户/数据库创建、网络访问)以及必要的验证步骤。通过实际示例和最佳实践,让您的 PostgreSQL 环境平稳安全地运行起来,为开发和部署做好准备。

36 浏览量

PostgreSQL 安装:综合分步指南

PostgreSQL,通常简称为 Postgres,是当今最先进、最受尊敬的开源关系数据库管理系统 (RDBMS) 之一。它以其成熟的架构、可靠性、数据完整性、强大的功能集和高性能而闻名,是满足从小型个人项目到大型企业应用程序需求的理想选择。它遵守 SQL 标准并具有广泛的可扩展性,使其成为开发人员和数据专业人员的强大而灵活的工具。

成功安装 PostgreSQL 是利用其功能的第一步。虽然具体过程可能因您的操作系统而略有不同,但本指南提供了一个全面的分步 walkthrough,涵盖了初始设置、基本配置以及重要的安装后步骤。遵循这些说明,您将确保一个平稳且安全的 PostgreSQL 环境,为开发和部署做好准备。

先决条件

在开始安装过程之前,请确保您的系统满足这些基本要求:

  • 管理员权限:在 Linux/macOS 上,您需要 sudo 权限;在 Windows 上,您需要管理员权限才能安装软件和配置系统服务。
  • 互联网连接:下载安装包所需。
  • 足够的磁盘空间:虽然初始安装相对较小,但您的数据库会增长。请确保您有足够的磁盘空间用于数据。

Linux 安装

Linux 发行版通常通过其默认软件包存储库提供 PostgreSQL,从而简化了安装。

Debian/Ubuntu

对于像 Ubuntu 这样的 Debian 系统,您可以使用 apt 安装 PostgreSQL。

  1. 更新软件包列表:始终先更新包管理器列表,以确保您获得最新可用的软件包。
    bash sudo apt update
  2. 安装 PostgreSQL:安装 postgresql 包,该包通常包含服务器、客户端实用程序和文档。您可以指定版本(例如 postgresql-16),或者仅使用 postgresql 来安装默认版本。
    bash sudo apt install postgresql postgresql-contrib
    postgresql-contrib 包提供了额外的实用程序和功能。

    注意:在 Debian/Ubuntu 上,PostgreSQL 服务通常在安装后自动启动,并且会创建一个默认的 postgres 用户(系统用户和数据库用户)。

  3. 验证安装:检查服务状态。
    bash sudo systemctl status postgresql
    您应该看到指示其为 active (exited)active (running) 的输出。如果主服务单元管理多个作为独立进程运行的集群,则 exited 是正常的。

RHEL/CentOS/Fedora

对于基于 Red Hat 的系统,请使用 dnf(或较旧的 CentOS/RHEL 版本使用 yum)。

  1. 安装 PostgreSQL 存储库:PostgreSQL 提供自己的存储库,其中包含比操作系统默认存储库更新的版本。建议使用此存储库来获取最新的稳定版本。
    bash sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 对于 EL-9,使用:sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 如有必要,请将 EL-8-x86_64 替换为您的特定操作系统版本和体系结构。
  2. 禁用默认 PostgreSQL 模块(如果适用):某些 RHEL/CentOS 版本带有默认的 PostgreSQL 模块。禁用它以避免与 PGDG 存储库冲突。
    bash sudo dnf -qy module disable postgresql
  3. 安装 PostgreSQL:安装服务器和 contrib 包。将 16 替换为您所需版本。
    bash sudo dnf install -y postgresql16-server postgresql16-contrib
  4. 初始化数据库集群:与 Debian/Ubuntu 不同,在基于 RHEL 的系统上,您通常需要手动初始化数据库集群。
    bash sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    请根据您安装的版本调整路径 /usr/pgsql-16/binpostgresql-16-setup

  5. 启动并启用 PostgreSQL 服务:启动服务并配置它以在启动时运行。
    bash sudo systemctl enable postgresql-16 sudo systemctl start postgresql-16

  6. 验证安装:检查服务状态。
    bash sudo systemctl status postgresql-16

macOS 安装

在 macOS 上,Homebrew 是安装 PostgreSQL 推荐且最简单的方法。

  1. 安装 Homebrew(如果您尚未安装):
    bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    按照屏幕上的说明操作,包括将 Homebrew 添加到您的 PATH

  2. 安装 PostgreSQL:使用 Homebrew 安装 PostgreSQL。您可以指定版本(例如 postgresql@16),或默认安装最新稳定版本。
    bash brew install postgresql

  3. 启动 PostgreSQL 服务:Homebrew 将 PostgreSQL 安装为后台服务。
    bash brew services start postgresql
    要停止它:brew services stop postgresql
    要重启它:brew services restart postgresql

  4. 验证安装:检查 psql 是否可用并已连接。
    bash psql -V
    连接到默认数据库:
    bash psql postgres

    提示:为了获得可视化、基于应用程序的体验,请考虑 Postgres.app,它提供了一种无需命令行即可运行和管理 PostgreSQL 的简单方法。

Windows 安装

在 Windows 上,EnterpriseDB (EDB) 图形安装程序是最常见且推荐的方法。

  1. 下载安装程序:访问官方 PostgreSQL 下载页面(www.postgresql.org/download/windows/)并下载适用于您 Windows 版本的最新 EDB 安装程序。

  2. 运行安装程序:执行下载的 .exe 文件。安装向导将引导您完成整个过程。

    • 安装目录:选择 PostgreSQL 的安装位置(例如 C:\Program Files\PostgreSQL\16)。
    • 数据目录:选择数据库文件的位置(例如 C:\Program Files\PostgreSQL\16\data)。这一点很重要,理想情况下应放在快速可靠的磁盘上。
    • postgres 超级用户的密码:为默认的 postgres 数据库超级用户设置一个强密码。请记住此密码,因为您将需要它来进行初始连接。
    • 端口:默认的 PostgreSQL 端口是 5432。通常可以将其保留为默认值,除非存在冲突。
    • 区域设置:选择数据库集群的默认区域设置。
  3. Stack Builder:安装完成后,EDB 安装程序可能会启动 Stack Builder。此工具可帮助安装额外的驱动程序、工具和扩展(如 pgAdmin 4)。强烈建议安装 pgAdmin 4,以便通过图形界面管理您的数据库。

  4. 验证安装:安装后,您可以打开 pgAdmin 4(通常在开始菜单的“PostgreSQL 16”或类似名称下找到),并尝试使用 postgres 超级用户和您设置的密码连接到本地服务器。

初始配置和安装后步骤

安装 PostgreSQL 后,这些步骤对于建立功能完善且安全的设置至关重要。

1. 设置 PATH 环境变量(可选,主要适用于 Windows/macOS,如果找不到 psql

为了方便地从任何终端位置运行 psql 和其他 PostgreSQL 二进制文件,请将 PostgreSQL 的 bin 目录添加到系统的 PATH

  • Linux:通常由包管理器处理,但如果没有,请将 /usr/pgsql-X.Y/bin (RHEL) 或 /usr/lib/postgresql/X.Y/bin (Debian/Ubuntu) 添加到您的 PATH
  • macOS (Homebrew)brew 会自动处理此问题。
  • Windows:在 EDB 安装过程中,有一个添加到 PATH 的选项。如果未选择,您可以通过 系统属性 > 环境变量 手动添加 C:\Program Files\PostgreSQL\16\bin(调整版本)。

2. 访问 psql 终端

psql 是 PostgreSQL 的命令行界面,对于管理和查询至关重要。

  • Linux/macOS:切换到 postgres 系统用户(安装期间创建)。
    bash sudo -i -u postgres psql
    现在您已作为 postgres 用户连接到 postgres 数据库。输入 \q 退出。

  • Windows:从开始菜单打开 SQL Shell (psql)PostgreSQL 16 > SQL Shell (psql))。它会提示输入服务器详细信息和 postgres 用户的密码。

3. 创建新的数据库用户和数据库

最佳实践是不要postgres 超级用户用于日常应用程序使用。请创建一个新的专用用户和数据库。

  1. postgres 超级用户身份登录(如上所示)。
  2. 创建一个新用户(角色)
    sql CREATE USER myuser WITH PASSWORD 'strong_password';
    提示:替换 myuserstrong_password 为安全凭据。

  3. 创建一个新数据库并分配所有权
    sql CREATE DATABASE mydatabase OWNER myuser;

  4. 授予权限(如果需要,或者 CREATE DATABASE 所有者已处理基本操作)
    sql GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
  5. 退出 psql
    sql \q

4. 配置 pg_hba.conf 以进行网络访问

pg_hba.conf 文件控制客户端身份验证。默认情况下,PostgreSQL 可能只允许来自 localhost (127.0.0.1) 的连接。

  • 位置:此文件通常位于 PostgreSQL 数据目录中(例如,Debian/Ubuntu 上的 /var/lib/postgresql/16/main/pg_hba.conf,RHEL 上的 /var/lib/pgsql/16/data/pg_hba.conf,或 Windows 上的 C:\Program Files\PostgreSQL\16\data\pg_hba.conf)。

  • 编辑文件(以 root/管理员身份):
    bash sudo nano /etc/postgresql/16/main/pg_hba.conf
    (根据您的操作系统和版本调整路径)。

    要允许 myuser 使用密码身份验证从任何 IP 地址连接,请添加类似以下内容的行:
    ```

    TYPE DATABASE USER ADDRESS METHOD

    host mydatabase myuser 0.0.0.0/0 md5
    ``md5表示密码身份验证。0.0.0.0/0表示任何 IP 地址。为获得更高安全性,请指定特定 IP 地址范围(例如192.168.1.0/24`)。

  • 重新加载 PostgreSQL:修改 pg_hba.conf 后,您必须重新加载 PostgreSQL 服务才能使更改生效。
    bash sudo systemctl reload postgresql # Linux # macOS 上的 Homebrew: # brew services restart postgresql # Windows:通过 Services.msc 重启 PostgreSQL 服务

5. 配置 postgresql.conf(网络监听)

默认情况下,PostgreSQL 通常仅监听 localhost。要接受来自其他计算机的连接,您需要修改 postgresql.conf

  • 位置:此文件通常与 pg_hba.conf 位于同一目录中。

  • 编辑文件
    bash sudo nano /etc/postgresql/16/main/postgresql.conf

    找到 listen_addresses 参数并进行更改:
    ```

    listen_addresses = 'localhost' # 监听哪些 IP 地址;

    listen_addresses = '*' # 监听所有可用的网络接口
    ```
    或者,如果您只想监听少数几个 IP 地址,则指定特定 IP 地址。

  • 重启 PostgreSQL:对 postgresql.conf 的更改需要完全重启服务。
    bash sudo systemctl restart postgresql # Linux # brew services restart postgresql # macOS # Windows:通过 Services.msc 重启 PostgreSQL 服务

验证您的安装

完成所有配置后,请执行最终验证:

  1. 检查 PostgreSQL 服务状态systemctl status postgresqlbrew services list 或 Windows Services)。
  2. 以您的新用户身份连接到您的新数据库:
    bash psql -h localhost -U myuser -d mydatabase
    系统会提示您输入 myuser 的密码。如果成功,您将看到 mydatabase=> 提示符。输入 \q 退出。

    如果从不同计算机连接,请将 localhost 替换为服务器的 IP 地址。

提示和最佳实践

  • 强密码:始终为所有数据库用户使用强而唯一的密码,尤其是 postgres 超级用户。
  • 专用数据目录:对于生产环境,请考虑将数据目录放在专用卷或 RAID 阵列上,以提高性能和可靠性。
  • 定期备份:从第一天起就实施强大的备份策略。PostgreSQL 的 pg_dumppg_basebackup 工具是实现此目的的出色工具。
  • 保持更新:及时更新您的 PostgreSQL 安装,以受益于错误修复、安全补丁和新功能。使用系统的包管理器或遵循 EDB 安装程序的更新过程。
  • 防火墙配置:如果允许远程连接,请确保您的系统防火墙(例如 ufwfirewalld、Windows Firewall)已配置为允许端口 5432(或您选择的端口)上的入站流量。

结论

您现在已在选择的操作系统上成功安装并执行了 PostgreSQL 的基本初始配置。本综合指南已引导您完成了 Linux、macOS 和 Windows 的特定平台步骤,以及用户和数据库创建、配置网络访问等重要的安装后任务。有了正常运行的 PostgreSQL,您现在就可以开始构建健壮的数据驱动型应用程序了。您的下一步可能包括学习更高级的数据库管理、探索 pgAdmin 4(如果在 Windows/macOS 上),或者深入使用您喜欢的编程语言及其 PostgreSQL 驱动程序进行应用程序开发。

拥抱 PostgreSQL 的强大功能——您高级数据管理之旅刚刚开始!