本页内容

  • 准备工作
  • 添加 PostgreSQL 软件仓库
  • 安装 PostgreSQL
  • PostgreSQL 基础认证
  • 修改 postgres 用户密码
  • 在 PostgreSQL 上创建用户和数据库
  • 创建表
  • 向表中插入数据
  • 在 PostgreSQL 中查询数据
  • 在 PostgreSQL 中更新数据
  • 删除数据库和用户
  • 结论

PostgreSQL 是一个免费、开源的数据库管理系统,侧重于可扩展性和 SQL 兼容性。PostgreSQL 是一款先进的企业级 RDBMS(关系型数据库管理系统),同时支持 SQL(关系型)和 JSON(非关系型)查询。

它是一款高度稳定的数据库管理系统,由开源社区历经 20 多年的开发迭代而成,并因其可靠性、灵活性、功能强大和性能而在开发者和系统管理员中享有良好的声誉。

PostgreSQL 被用作 Web、移动和分析应用的主数据库。全球一些知名的 PostgreSQL 用户包括 Reddit、Skype、Instagram、Disqus、The Guardian、Yandex、Bloomberg、Nokia、BMW 等。

在本教程中,你将学习如何在 AlmaLinux 9 上安装 PostgreSQL。此外,你还将学习如何配置 PostgreSQL 认证、PostgreSQL 创建数据库和用户的基本用法,以及一些用于创建表、插入和查询数据、更新和删除数据的基本查询。

准备工作

在开始之前,你必须满足以下要求:

  • 一台 AlmaLinux 9 服务器。
  • 一个具有 sudo/root 管理员权限的非 root 用户。

添加 PostgreSQL 软件仓库

默认情况下,AlmaLinux 软件仓库会提供 PostgreSQL 软件包。但是,为了获得 PostgreSQL 的完整功能,你可以从 PostgreSQL 官方仓库安装 PostgreSQL。这将确保你还能安装最新版本的 PostgreSQL。

第一步,你将把 PostgreSQL 软件仓库添加到你的 AlmaLinux 9 服务器上。你可以从 PostgreSQL 下载页面选择 PostgreSQL 仓库。

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

使用以下命令添加适用于 RHEL 9 的 PostgreSQL 软件仓库。该仓库可用于基于 RHEL 9 的 Linux 发行版,包括 CentOS 9 和 AlmaLinux 9。

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

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

添加仓库后,运行以下命令来验证系统中可用的软件仓库列表。如果成功,你应该会看到针对不同 PostgreSQL 版本的多个 PostgreSQL 仓库。

sudo dnf repolist

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

现在,运行以下命令刷新 AlmaLinux 仓库并获取最新版本的软件包缓存信息。

sudo dnf makecache -y

安装 PostgreSQL

添加 PostgreSQL 软件仓库后,你可以安装 PostgreSQL 服务器软件包。你可以通过官方 PostgreSQL 安装 PostgreSQL 11、12、13、14 以及最新版本 15。

这里的第二步是将最新版本的 PostgreSQL 15 安装到 AlmaLinux 9 服务器上。

运行以下 dnf 命令将 PostgreSQL 15 安装到你的 AlmaLinux 服务器上。在提示时输入 y 并按 ENTER 键继续安装。

sudo dnf install postgresql15 postgresql15-server postgresql15-contrib

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

安装 PostgreSQL 后,运行以下命令初始化 PostgreSQL 的数据和配置。

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

现在,运行以下 systemctl 命令来启动并启用 PostgreSQL 15 服务。这将在默认端口 5432 上启动 PostgreSQL 服务,并使 PostgreSQL 服务在系统启动时自动运行。

sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15

最后,运行以下命令验证 PostgreSQL 服务,确保该服务正在运行。

sudo systemctl status postgresql-15

如果正在运行,你应该会看到类似 ' active (running) ' 的输出。

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

PostgreSQL 基础认证

了解 PostgreSQL 认证方式至关重要,这样你才能确保你的应用所使用的 PostgreSQL 用户可以登录并访问数据库。PostgreSQL 存在多种认证方法,包括 peer、trust、md5 和 scram-sha-256。你可以通过位于 '/var/lib/pgsql/VERSION/data/' 目录下的 'pg_hba.conf' 配置文件来设置和调整 PostgreSQL 认证。

运行以下 cat 命令查看默认的 ' pg_hba.conf ' 文件。

cat /var/lib/pgsql/15/data/pg_hba.conf

在底部一行,你应该会看到如下的默认配置:

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

这意味着对于每一个本地连接,都将使用 peer 认证方法,即使用 Unix socket。如果你使用以下命令连接 PostgreSQL,将通过 peer 认证方法和 Unix socket 进行本地连接。

sudo -u postgres psql

但是,如果你指定 PostgreSQL 服务器的主机(如 ' -h localhost ')和用户(如 ' -U postgres '),则将通过 scram-sha-256 密码认证进行连接,如下面的命令所示。

sudo -u postgres psql -h localhost -U postgres

由于你没有默认 postgres 用户的密码,你会遇到类似这样的错误:

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

修改 postgres 用户密码

在本节中,你将设置并修改默认 PostgreSQL 用户 ' postgres ' 的密码。

首先,通过本地认证登录到 PostgreSQL 服务器。

sudo -u postgres psql

现在,运行以下查询来设置默认 ' postgres ' 用户的密码,然后输入 ' quit ' 退出。另外,请务必将以下密码替换为你自己的密码。

ALTER ROLE postgres WITH PASSWORD 'NewP4ssw0rd';
quit

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

在 ' postgres ' 用户密码修改完成后,运行以下命令来验证你的密码。当系统提示时,输入 ' postgres ' 用户的密码。

sudo -u postgres psql -h localhost -U postgres

登录后,运行以下查询来检查详细的连接信息。你应该会看到你已使用用户 ' postgres ' 连接到了 PostgreSQL 服务器 ' localhost ',目标数据库为 ' postgres '。

\conninfo

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

在 PostgreSQL 上创建用户和数据库

在本节中,你将学习如何在 PostgreSQL 上创建新用户和数据库,让我们开始吧。

你必须确保已通过 'psql' 客户端登录到 PostgreSQL。你可以使用以下命令登录。

sudo -u postgres psql -h localhost -U postgres

现在,运行以下查询创建一个名为 ' appuser ' 的新 PostgreSQL 用户,密码为 ' p4ssAppuser '。成功后,你应该会看到类似 ' CREATE ROLE ' 的输出。

CREATE USER appuser LOGIN CREATEDB PASSWORD 'p4ssAppuser';

运行以下查询来验证 PostgreSQL 上的用户列表。如果成功,你应该会在用户列表中看到新用户 ' appuser '。

\du

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

输入 ' quit ' 退出 PostgreSQL 服务器。

quit

接下来,运行以下命令,使用新用户 ' appuser ' 连接到目标数据库 ' postgres '。当系统提示时,输入用户 ' appuser ' 的密码。

sudo -u postgres psql -h localhost -U appuser -d postgres

登录后,运行以下查询来验证当前连接。你应该会看到你已通过新用户 ' appuser ' 登录到 PostgreSQL,数据库为 ' postgres '。

\conninfo

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

现在,运行以下查询创建一个名为 ' appdb ' 的新数据库,默认所有者为 ' appuser '。

CREATE DATABASE appdb OWNER appuser;

然后,验证 PostgreSQL 服务器上可用的数据库列表。如果成功,你应该会看到数据库 ' appdb ' 出现在 PostgreSQL 中,所有者为 ' appuser '。

\l

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

现在你可以使用 ' \connect ' 查询从 ' postgres ' 数据库切换到新数据库 ' appdb '。然后验证当前连接。

\connect appdb;
\conninfo

此时,你现在应该已经切换到了新数据库 ' appdb '。

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

输入 'quit' 退出 PostgreSQL 服务器,然后使用以下命令通过用户 ' appuser ' 验证到新数据库 ' appdb ' 的连接。

sudo -u postgres psql -h localhost -U appuser -d appdb

当系统提示时,输入 'appuser' 的密码。登录后,检查连接状态。

\conninfo

你应该会看到你已通过用户 ' appuser ' 连接到了新数据库 ' appdb '。

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

至此,你已经在 PostgreSQL 上创建了一个可供应用使用的数据库和用户。此外,你还将在下一节中学习如何在 PostgreSQL 上创建表、插入和查询数据。

创建表

在创建新数据库之后,你将学习如何在 PostgreSQL 上创建表。

在数据库 ' appdb ' 中,运行以下查询创建一个名为 'teachers' 的新表,包含 ' name'、'age'、'address' 和 'salary' 列。

CREATE TABLE teachers (
   id INT PRIMARY KEY     NOT NULL,
   name           TEXT    NOT NULL,
   age            INT     NOT NULL,
   address        CHAR(50),
   salary         REAL
);

现在,运行以下查询显示数据库 ' appdb ' 中所有可用的表,你应该会看到你创建的表 ' teachers '。

\dt

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

最后,使用以下查询检查表 'teachers' 上可用的列。你应该会看到 id、name、age、address 和 salary 等列。

\d+ teachers

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

向表中插入数据

在表 'teachers' 创建完成后,你现在将学习如何在 PostgreSQL 上插入数据。

运行以下查询将新数据插入到表 ' teachers ' 中。成功后,你应该会看到类似 INSERT 0 1 的输出。

INSERT INTO teachers (id,name,age,address,salary) VALUES (1, 'Lea', 25, 'California', 20000.00);
INSERT INTO teachers (id,name,age,address,salary) VALUES (2, 'Lin', 35, 'Germany', 30000.00);
INSERT INTO teachers (id,name,age,address,salary) VALUES (3, 'Lisa', 27, 'Canada', 40000.00);

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

在 PostgreSQL 中查询数据

接下来,运行 SELECT 查询从表 ' teachers ' 中检索数据。这将检索该表中所有可用列的全部数据。

SELECT * FROM teachers;

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

你也可以像这样使用 SELECT 从特定的列中检索数据。在下面的示例中,你将检索 name 和 salary 列的数据。

SELECT name,salary FROM teachers;

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

在 PostgreSQL 中更新数据

运行以下查询更新表 ' teachers ' 中的当前数据。这将更新 ' name ' 列值为 ' Lisa ' 的行的 ' address ' 列。成功后,你应该会看到类似 UPDATE 1 的输出。

UPDATE teachers SET address = 'France' WHERE name = 'Lisa';

现在运行以下查询来验证新更新的数据。你应该会看到 ' Lisa ' 的 ' address ' 列已更改为 ' France '。

SELECT * FROM teachers WHERE name = 'Lisa';

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

删除数据库和用户

为了清理你的环境,你将删除所创建的数据库和用户。你将要从 PostgreSQL 服务器上删除数据库 'appdb' 和用户 'appuser'。

首先,你必须使用以下查询切换到 ' postgres ' 数据库。

\connect postgres

运行以下查询删除数据库 ' appdb ',然后验证 PostgreSQL 服务器上的数据库列表,数据库 ' appdb ' 应该已被移除。

DROP DATABASE appdb
\l

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

现在输入 ' quit ' 退出当前以 ' appuser ' 身份登录的会话。在从 PostgreSQL 中删除用户 ' appuser ' 之前需要这样做。

quit

接下来,使用以下命令以默认 PostgreSQL 用户 ' postgres ' 身份登录。

sudo -u postgres psql

登录后,使用以下查询删除用户 ' appuser '。如果成功,你应该会看到类似 DROP ROLE 的输出。

DROP user appuser;

现在使用以下查询验证 PostgreSQL 上可用的用户列表。用户 ' appuser ' 应该已从 PostgreSQL 中删除。

分步指南:在 AlmaLinux 9 上安装 PostgreSQL

至此,你已清理完你的 PostgreSQL 服务器安装。

结论

恭喜!通过本教程,你现已在 AlmaLinux 9 上安装了 PostgreSQL。你已从官方 PostgreSQL 仓库在 AlmaLinux 9 上安装了最新版本的 PostgreSQL 15。除此之外,你还学习了 PostgreSQL 的基本认证方法、如何通过 psql PostgreSQL 客户端命令行连接到 PostgreSQL,以及如何为默认 PostgreSQL 用户 ' postgres ' 设置密码。最后同样重要的是,你还学习了一些 PostgreSQL 的基本查询,用于创建数据库、用户和表,以及插入、查询、更新和删除数据。