最新PostgreSQL安装教程(含详细步骤)

最新 PostgreSQL 安装教程(含详细步骤)

PostgreSQL 是一款功能强大、开源的对象-关系型数据库系统 (ORDBMS),以其可靠性、数据完整性和广泛的功能集而闻名。 无论您是开发人员、数据库管理员,还是仅仅对学习数据库感兴趣,本教程都将指导您完成在不同操作系统上安装 PostgreSQL 的详细过程。

本教程涵盖以下内容:

  1. Windows 上的 PostgreSQL 安装
  2. macOS 上的 PostgreSQL 安装
  3. Linux 上的 PostgreSQL 安装 (Ubuntu/Debian, CentOS/RHEL/Fedora)
  4. PostgreSQL 的基本配置
  5. 连接到 PostgreSQL 数据库
  6. 常见问题解答 (FAQ)

1. Windows 上的 PostgreSQL 安装

在 Windows 上安装 PostgreSQL 最简单的方法是使用 EnterpriseDB 提供的图形化安装程序。

步骤:

  1. 下载安装程序:

  2. 运行安装程序:

    • 双击下载的 .exe 文件。
    • 如果出现“用户帐户控制”提示,请单击“是”以允许安装程序进行更改。
  3. 安装向导:

    • 欢迎界面: 单击“下一步”。
    • 安装目录:
      • 默认情况下,PostgreSQL 将安装在 C:\Program Files\PostgreSQL\<version>
      • 您可以更改安装目录,但建议保留默认设置。
      • 单击“下一步”。
    • 数据目录:
      • 默认情况下,数据目录将位于安装目录下的 data 文件夹中。
      • 数据目录存储数据库文件。 建议保留默认设置。
      • 单击“下一步”。
    • 密码:
      • 输入并确认超级用户 (postgres) 的密码。
      • 请务必记住此密码,因为您将需要它来管理数据库。
      • 单击“下一步”。
    • 端口:
      • 默认端口号为 5432。 除非您有特殊原因,否则建议保留默认设置。
      • 单击“下一步”。
    • 区域设置:
      • 选择适当的区域设置(例如,"Default locale" 或特定语言/区域)。
      • 单击“下一步”。
    • 预安装摘要:
      • 查看安装设置。 如果一切正确,请单击“下一步”。
    • 安装:
      • 安装程序将开始复制文件并配置 PostgreSQL。
      • 此过程可能需要几分钟时间。
  4. Stack Builder (可选):

    • 安装完成后,安装程序可能会提示您启动 Stack Builder。
    • Stack Builder 是一个工具,可用于下载和安装 PostgreSQL 的附加工具、驱动程序和应用程序(例如,PostGIS 地理空间扩展)。
    • 您可以选择启动 Stack Builder 并安装所需的组件,也可以稍后手动安装它们。
  5. 完成:

    • 安装完成后,单击“完成”。
    • 建议重新启动计算机以确保所有更改生效。
  6. 验证安装:

    • 打开 "开始" 菜单,找到 "PostgreSQL" 文件夹,然后选择 "SQL Shell (psql)"。
    • 输入您在安装过程中设置的超级用户 (postgres) 密码。
    • 如果您看到 postgres=# 提示符,则表示安装成功。
    • 您可以键入 \q 并按 Enter 键退出 psql。

2. macOS 上的 PostgreSQL 安装

在 macOS 上安装 PostgreSQL 有几种方法:

  • 使用 Homebrew(推荐): Homebrew 是 macOS 上流行的包管理器,可以轻松安装和管理软件。
  • 使用 Postgres.app: Postgres.app 是一个独立的 macOS 应用程序,包含 PostgreSQL 服务器和图形化管理工具。
  • 使用 EnterpriseDB 安装程序: 与 Windows 类似,您也可以使用 EnterpriseDB 提供的图形化安装程序。

使用 Homebrew 安装 (推荐):

  1. 安装 Homebrew (如果尚未安装):

    • 打开终端 (Terminal)。
    • 运行以下命令:
      bash
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    • 按照屏幕上的说明完成 Homebrew 的安装。
  2. 安装 PostgreSQL:

    • 在终端中运行以下命令:
      bash
      brew install postgresql
    • Homebrew 将下载并安装 PostgreSQL 及其依赖项。
  3. 启动 PostgreSQL 服务:

    • 运行以下命令以启动 PostgreSQL 服务并在系统启动时自动启动:
      bash
      brew services start postgresql

      或者,如果不想开机启动
      bash
      pg_ctl -D /usr/local/var/postgres start
  4. 创建数据库用户 (可选):

    • 默认情况下,Homebrew 安装的 PostgreSQL 使用您的 macOS 用户名作为数据库超级用户。
    • 您可以使用 createuser 命令创建其他数据库用户:
      bash
      createuser -s <username> # 创建一个超级用户
      createuser <username> # 创建一个普通用户
  5. 验证安装:

    • 在终端中运行 psql 命令。
    • 如果连接成功,您将看到 postgres=# 提示符。
    • 键入 \q 并按 Enter 键退出 psql。

使用 Postgres.app 安装:

  1. 下载 Postgres.app:

  2. 安装 Postgres.app:

    • 双击下载的 .dmg 文件。
    • 将 Postgres.app 图标拖到“应用程序”文件夹中。
  3. 启动 Postgres.app:

    • 打开“应用程序”文件夹并双击 Postgres.app。
    • Postgres.app 将在菜单栏中显示一个大象图标,表示 PostgreSQL 服务器正在运行。
  4. 初始化数据库 (如果需要):

    • 首次启动 Postgres.app 时,它可能会提示您初始化数据库。
    • 单击“初始化”按钮。
  5. 配置 PATH (可选):

    • 为了方便在终端中使用 PostgreSQL 命令行工具 (如 psql),您可以将 Postgres.app 的 bin 目录添加到您的 PATH 环境变量中。
    • 编辑您的 shell 配置文件 (例如,~/.bash_profile~/.zshrc) 并添加以下行:
      bash
      export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"
    • 重新加载您的 shell 配置文件或打开一个新的终端窗口以使更改生效。
  6. 验证安装:

    • 从Postgres.app的菜单里点击"Open psql"
    • 如果连接成功,您将看到 postgres=# 提示符。
    • 键入 \q 并按 Enter 键退出 psql。

3. Linux 上的 PostgreSQL 安装

在 Linux 上安装 PostgreSQL 通常使用包管理器。 以下是在两种常见的 Linux 发行版上安装 PostgreSQL 的步骤:

3.1 Ubuntu/Debian

  1. 更新软件包列表:
    bash
    sudo apt update

  2. 安装 PostgreSQL 软件包:
    bash
    sudo apt install postgresql postgresql-contrib

    • postgresql 软件包包含 PostgreSQL 服务器。
    • postgresql-contrib 软件包包含一些额外的实用程序和扩展。
  3. 启动 PostgreSQL 服务:

    • 在大多数现代 Ubuntu/Debian 系统上,PostgreSQL 服务将在安装后自动启动。
    • 您可以使用以下命令检查服务状态:
      bash
      sudo systemctl status postgresql
    • 如果服务未运行,可以使用以下命令启动它:
      bash
      sudo systemctl start postgresql
    • 要使 PostgreSQL 在系统启动时自动启动,请运行:
      bash
      sudo systemctl enable postgresql
  4. 设置 postgres 用户的密码:

    • 默认情况下,PostgreSQL 安装会创建一个名为 postgres 的 Linux 用户和一个同名的数据库超级用户。
    • 为了安全起见,您应该为 postgres 用户设置密码:
      bash
      sudo passwd postgres

      输入并确认新密码。
  5. 验证安装:

    • 切换到 postgres 用户:
      bash
      sudo -i -u postgres
    • 运行 psql 命令:
      bash
      psql
    • 如果连接成功,您将看到 postgres=# 提示符。
    • 键入 \q 并按 Enter 键退出 psql。
    • 键入 exit 返回到您的原始用户。

3.2 CentOS/RHEL/Fedora

  1. 安装 PostgreSQL 软件包:
    bash
    sudo dnf install postgresql-server postgresql-contrib

    (在较旧的 CentOS/RHEL 版本上,使用 yum 而不是 dnf。)

  2. 初始化数据库:

    • 在 CentOS/RHEL/Fedora 上,您需要在启动 PostgreSQL 服务之前初始化数据库:
      bash
      sudo /usr/bin/postgresql-setup initdb
  3. 启动 PostgreSQL 服务:
    bash
    sudo systemctl start postgresql

  4. 使 PostgreSQL 在系统启动时自动启动:
    bash
    sudo systemctl enable postgresql

  5. 设置 postgres 用户的密码:
    bash
    sudo passwd postgres

    输入并确认新密码。

  6. 验证安装:

    • 切换到 postgres 用户:
      bash
      sudo -i -u postgres
    • 运行 psql 命令:
      bash
      psql
    • 如果连接成功,您将看到 postgres=# 提示符。
    • 键入 \q 并按 Enter 键退出 psql。
    • 键入 exit 返回到您的原始用户。

4. PostgreSQL 的基本配置

安装 PostgreSQL 后,您可能需要进行一些基本配置以满足您的需求。

主要的配置文件:

  • postgresql.conf: 这是 PostgreSQL 的主要配置文件,包含各种服务器设置,例如监听地址、端口、内存分配等。
  • pg_hba.conf: 此文件控制客户端身份验证。 它定义了哪些用户可以从哪些主机连接到哪些数据库,以及使用哪种身份验证方法。

配置文件的位置:

  • Windows: 通常位于数据目录中 (例如, C:\Program Files\PostgreSQL\<version>\data)。
  • macOS (Homebrew): /usr/local/var/postgres/
  • macOS (Postgres.app): 位于Postgres.app程序的数据目录中。右键点击菜单栏图标,选择"Show Data Directory"
  • Linux: 通常位于 /etc/postgresql/<version>/main/ (Ubuntu/Debian) 或 /var/lib/pgsql/<version>/data/ (CentOS/RHEL/Fedora)。

修改配置文件:

  1. 使用文本编辑器打开配置文件。 您可能需要管理员权限才能编辑这些文件。
  2. 进行所需的更改。 仔细阅读文件中的注释,了解每个设置的作用。
  3. 保存文件。
  4. 重新启动 PostgreSQL 服务 以使更改生效。

常见配置更改:

  • 监听地址 (listen_addresses):
    • 默认情况下,PostgreSQL 仅监听本地连接 (localhost)。
    • 如果您希望允许来自其他计算机的远程连接,请将 listen_addresses 设置为 '*' (监听所有接口) 或特定 IP 地址。
  • 端口 (port):
    • 默认端口号为 5432。 如果您需要更改端口,请在此处修改。
  • 客户端身份验证 (pg_hba.conf):
    • pg_hba.conf 文件中的每一行都指定一个连接规则。
    • 常见的身份验证方法包括:
      • trust:允许任何连接,无需密码 (不安全,仅用于测试)。
      • md5:使用 MD5 密码哈希进行身份验证。
      • password:使用明文密码进行身份验证 (不安全)。
      • scram-sha-256: 使用更安全的 SCRAM-SHA-256 密码哈希进行身份验证(推荐)。
    • 例如,要允许来自特定 IP 地址 (例如, 192.168.1.100) 的所有用户使用 MD5 密码连接到所有数据库,您可以添加以下行:
      host all all 192.168.1.100/32 md5
    • 修改 pg_hba.conf 后,您需要重新加载 PostgreSQL 配置 (无需重启服务):
      bash
      sudo -u postgres psql -c "SELECT pg_reload_conf();"

5. 连接到 PostgreSQL 数据库

安装和配置 PostgreSQL 后,您可以使用各种客户端工具连接到数据库。

常用的客户端工具:

  • psql (命令行客户端):

    • psql 是 PostgreSQL 自带的命令行客户端。
    • 要连接到本地数据库,请运行 psql -U <username> -d <database>
    • 例如,要以 postgres 用户连接到默认的 postgres 数据库,请运行 psql -U postgres
    • 系统将提示您输入密码。
    • 要连接到远程数据库,请使用 -h 选项指定主机名或 IP 地址:psql -U <username> -h <host> -d <database>
  • pgAdmin (图形化客户端):

    • pgAdmin 是一个流行的开源 PostgreSQL 图形化管理工具。
    • 您可以从 pgAdmin 网站下载并安装它:https://www.pgadmin.org/
    • pgAdmin 提供了一个用户友好的界面,用于管理数据库、表、用户、执行 SQL 查询等。
  • 其他客户端:
    • 许多其他数据库客户端和开发工具也支持 PostgreSQL,例如 DBeaver、DataGrip、Navicat 等。

6. 常见问题解答 (FAQ)

Q: 如何启动/停止/重启 PostgreSQL 服务?

  • Windows:
    • 打开“服务”管理器 (搜索 "services.msc")。
    • 找到 "PostgreSQL" 服务。
    • 右键单击该服务,然后选择“启动”、“停止”或“重启”。
  • macOS (Homebrew):
    bash
    brew services start postgresql # 启动
    brew services stop postgresql # 停止
    brew services restart postgresql # 重启
  • macOS (Postgres.app):
    • 在菜单栏中单击 Postgres.app 图标,然后选择“Start”或“Stop”。
  • Linux (systemd):
    bash
    sudo systemctl start postgresql # 启动
    sudo systemctl stop postgresql # 停止
    sudo systemctl restart postgresql # 重启

Q: 如何创建新的数据库?

  • 使用 psql:
    sql
    CREATE DATABASE <database_name>;
  • 使用 createdb 命令行工具:
    bash
    createdb <database_name>

Q: 如何创建新的数据库用户?

  • 使用 psql:
    sql
    CREATE USER <username> WITH PASSWORD '<password>';
  • 使用 createuser 命令行工具:
    bash
    createuser <username>

    然后,您可以使用 psql 中的 ALTER USER 命令设置密码。

Q: 如何授予用户对数据库的权限?

sql
GRANT <privilege> ON DATABASE <database_name> TO <username>;

例如,要授予用户对数据库的完全权限:

sql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;

Q: 如何备份和恢复 PostgreSQL 数据库?

  • 备份 (pg_dump):
    bash
    pg_dump -U <username> -d <database_name> > <backup_file.sql>
  • 恢复 (psql):
    bash
    psql -U <username> -d <database_name> < <backup_file.sql>

Q:安装了新版本的PostgreSQL, 如何迁移旧版本数据库?

可以使用pg_upgrade工具进行数据库迁移
例如:
bash
pg_upgrade \
-d /var/lib/pgsql/9.6/data/ \
-D /var/lib/pgsql/12/data/ \
-b /usr/pgsql-9.6/bin/ \
-B /usr/pgsql-12/bin/

Q:如果忘记了PostgreSQL的超级用户(postgres)密码,如何重置?

  1. 停止PostgreSQL服务
  2. 编辑 pg_hba.conf
    将包含local all postgres配置项的那一行的验证方式从md5或者其他,改为trust
  3. 启动PostgreSQL服务
  4. 使用psql免密登录
    bash
    psql -U postgres
  5. 修改密码
    sql
    ALTER USER postgres WITH PASSWORD 'new_password';
  6. pg_hba.conf 恢复到之前的状态
  7. 重启PostgreSQL服务

希望这篇详细的 PostgreSQL 安装教程对您有所帮助! 如果您在安装或配置过程中遇到任何问题,请随时查阅 PostgreSQL 官方文档或在相关论坛上寻求帮助。

THE END