如何在 Rocky Linux 9 上安装 PostgreSQL 15
本教程适用于这些操作系统版本
- 洛基Linux 9
- 洛基Linux 8.4
在此页
- 先决条件
- 设置存储库
- 安装 PostgreSQL 15
- 设置用户身份验证和密码加密
- 为 PostgreSQL 用户设置密码
- 在 PostgreSQL 上创建新数据库和用户
- 创建表并插入数据
- 检索数据和更新数据
- 清理环境
- 结论
PostgreSQL 是一个免费的开源数据库管理系统,专注于可扩展性和 SQL 合规性。 PostgreSQL 是一个先进的企业级 RDBMS(关系数据库管理系统),同时支持 SQL(关系)和 JSON(非关系)查询。
它是一个具有 20 多年支持的高度稳定的数据库管理系统由开源社区开发,并因其可靠性、灵活性、功能稳健性和性能而在开发人员和系统管理员中享有盛誉。
PostgreSQL 被用作 Web 应用程序、移动应用程序、和分析应用。全球一些著名的 PostgreSQL 用户包括 Reddit、Skype、Instagram、Disqus、The Guardian、Yandex、Bloomberg、Nokia、BMW 等。
本教程将指导您在 Rocky Linux 9 服务器上安装最新的 PostgreSQL 15。这也将指导您了解 PostgreSQL 的基本用法,以创建用户/角色、管理数据库、创建表、插入和检索数据。
先决条件
您将需要满足以下要求才能完成本指南:
- 一个 Rocky Linux 9 服务器——这个例子将使用主机名为 postgresql-rocky 的 Rocky Linux。
- 具有 sudo/root 管理员权限的非 root 用户。
- 以宽容模式运行的 SELinux。
让我们跳转到 PostgreSQL 15 安装。
设置存储库
在此连线时,PostgreSQL 15 在 Rocky Linux 存储库中不可用。因此,要安装 PostgreSQL 15,您必须使用官方 PostgreSQL 存储库。
第一步是安装 PostgreSQL 存储库并将其添加到您的 Rocky Linux 9 服务器。
运行以下命令将官方 PostgreSQL 存储库添加到您的系统。此存储库可用于多个基于 RHEL 的发行版本 9。
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
在此过程中,您将收到以下输出:

现在通过下面的 dnf 命令验证可用存储库列表。
sudo dnf repolist
您将收到类似于此屏幕截图的输出——您已将多个版本的 PostgreSQL 存储库添加到您的 Rocky Linux,包括最新版本的 PostgreSQL 15。

添加 PostgreSQL 存储库后,您将在下一步中了解如何安装和配置 PostgreSQL 15。
安装 PostgreSQL 15
在此步骤中,您将在 Rocky Linux 上安装 PostgreSQL 15,初始化 PostgreSQL 数据库和配置,然后启动并启用 PostgreSQL 15 服务。
运行以下 dnf 命令来安装 PostgreSQL 15 服务器。在提示配置时输入 y,然后按 ENTER 继续。
sudo dnf install postgresql15-server postgresql15-contrib

此外,当系统提示您接受 PostgreSQL 存储库的 GPG 密钥时,输入 y 进行确认,然后按 ENTER 继续。

安装 PostgreSQL 15 后,运行以下命令初始化 PostgreSQL 数据库和配置。
sudo postgresql-15-setup initdb
这样,您将收到诸如Initializing database ... OK 之类的输出。
现在运行以下 systemctl 命令实用程序以启动并启用 PostgreSQL 15 服务。
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15

最后,通过下面的 systemctl 命令验证 PostgreSQL 15 服务。这将确保您的 PostgreSQL 15 服务器已启用并正在运行。
sudo systemctl status postgresql-15
您将收到类似此屏幕截图的输出 - PostgreSQL 15 的状态正在运行,并且已启用,这意味着该服务将在启动时自动启动。

现在您已经安装了 PostgreSQL 15 服务器并启用并运行。在下一步中,您将为 PostgreSQL 用户设置身份验证方法。
设置用户验证和密码加密
安装并运行 PostgreSQL 15 后,您现在可以检查 PostgreSQL 身份验证的配置。这可以通过 PostgreSQL 配置目录中的配置文件 pg_hba.conf 进行配置。
通过以下命令登录到 PostgreSQL shell。
sudo -u postgres psql
登录后,运行以下查询以验证存储身份验证方法的默认 PostgreSQL 配置,并验证 PostgreSQL 服务器上使用的当前密码加密。
SHOW hba_file;
SHOW password_encryption;
您将收到类似于此的输出 - 用于身份验证的默认 PostgreSQL 配置文件是 /var/lib/pgsql/15/data/pg_hba.conf 启用的默认密码身份验证是 scram-sha- 256。

现在使用以下 nano 编辑器命令打开 PostgreSQL 配置文件 /var/lib/pgsql/15/data/pg_hba.conf。
sudo nano /var/lib/pgsql/15/data/pg_hba.conf
使用以下行更改默认配置。这会将密码验证从 localhost 更改为 scram-sha-256。对于本地 连接,您可以使用默认对等点或使用 scram-sha-256 密码身份验证。
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
完成后保存文件并退出编辑器。

接下来,运行以下 systemctl 命令以重新启动 PostgreSQL 15 服务并应用更改。
sudo systemctl restart postgresql-15
最后,要验证您的配置,请通过以下命令登录到 PostgreSQL shell。
sudo -u postgres psql
使用以下查询检查连接详细信息。您应该看到您已经通过对等 unix_socket 本地连接连接到 PostgreSQL。
\conninfo

现在,如果您将 PostgreSQL 主机指定为本地主机 127.0.0.1,您应该会看到使用 scram-sha-256 通过密码身份验证的连接。
sudo -u postgres psql -U postgres -h 127.0.0.1
\conninfo
为 PostgreSQL 用户设置密码
默认情况下,PostgreSQL 创建了一个新的系统用户和名为 postgres 的 PostgreSQL 用户。在此步骤中,您将通过命令行为 Linux 用户 postgres 和通过 PostgreSQL shell 为 PostgreSQL 用户 postgres 设置新密码。
首先,运行以下命令为用户 postgres 创建一个新密码。输入新密码并重复,确保为您的 postgres 用户使用强密码。
sudo passwd postgres
接下来,通过以下命令登录到 PostgreSQL shell。
sudo -u postgres psql
运行以下查询以更改默认 PostgreSQL 用户 postgres 的密码。并确保在以下查询中使用密码。
ALTER USER postgres WITH PASSWORD 'p4ssw0rdPostgreSQL15';
exit
输入 exit 从 PostgreSQL shell 注销。

最后,通过以下命令再次登录到 PostgreSQL 服务器。
sudo -u postgres psql -U postgres -h 127.0.0.1
当提示输入密码时,输入您创建的 PostgreSQL 服务器密码。然后,按 ENTER。
如果成功,您应该会在下面的屏幕截图中看到 PostgreSQL shell。您还可以通过以下查询验证连接状态。
\conninfo

在此步骤中,您更改并配置了默认 PostgreSQL 用户 postgres 的密码。您还为默认的 UNIX 用户 postgres 创建了一个新密码。在下一步中,您将学习如何创建一个新的 PostgreSQL 用户并为您的应用程序创建一个新的数据库。
在 PostgreSQL 上创建新数据库和用户
在此步骤中,您将学习如何通过 PostgreSQL shell 创建新的 PostgreSQL 用户和数据库。您还将学习如何检查 PostgreSQL 服务器上可用的数据库和用户列表。
首先,确保您已登录到 PostgreSQL shell。或者您可以通过以下命令登录。
sudo -u postgres psql
使用以下查询创建一个新的 PostgreSQL 用户。此示例将创建一个新用户 alice,该用户具有创建数据库的权限 CREATEDB 和在 PostgreSQL 中创建角色的 CREATEROLE\。
CREATE USER alice WITH CREATEDB CREATEROLE PASSWORD 'p4ssw0rdAlice';
接下来,使用以下 PostgreSQL 查询创建一个新数据库。对于此示例,您将创建两个数据库,alice 数据库和 testdb 数据库。两个数据库将具有相同的所有者,即用户 alice。
CREATE DATABASE alice OWNER alice;
CREATE DATABASE testdb OWNER alice;

现在验证 PostgreSQL 服务器上的用户列表和数据库列表。
\du
\l
\du 查询的输出,用于显示 PostgreSQL 服务器上的用户列表。新用户 alice 是用 CREATEDB 和 CREATEROLE 权限创建的。

\l 查询的输出,用于显示 PostgreSQL 服务器上的数据库列表。您会看到创建了新数据库 alice 和 testdb。

最后,为了验证新的 PostgreSQL 用户,您将通过新用户 alice 登录到 PostgreSQL shell。
运行以下命令以通过用户 alice 登录到 PostgreSQL shell。当提示输入密码时,输入您的密码并按 ENTER 确认。
sudo -u postgres psql -U alice -h 127.0.0.1
登录到 PostgreSQL shell 后,运行以下查询以显示当前的详细连接。
\conninfo
您应该会收到与此类似的输出 - 您已经通过用户 alice 连接到 PostgreSQL 服务器并连接到数据库 alice。

现在,您已经创建了 PostgreSQL 用户和数据库。此外,您已经通过新用户登录到 PostgreSQL shell。在下一步中,您将学习如何创建表并向其中插入一些数据。
创建表并插入数据
创建新的 PostgreSQL 用户和数据库后,您现在将学习如何在 PostgreSQL 中创建表和插入数据。您还将学习如何切换到 PostgreSQL 上的不同数据库以及如何检查 PostgreSQL 数据库上的列表。
在开始之前,确保您已经以用户 alice 的身份登录到 PostgreSQL shell。
验证数据库列表以确保数据库 testdb 可用。
\l

现在通过以下查询切换到数据库 testdb。你可以使用 切换到数据库 testdb 后,您的 PostgreSQL shell 应该变成这样 testdb=>。 接下来,运行以下查询以创建一个新表 users,其中包含一些列 id、name、age、<\connect testdb
CREATE TABLE users (
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
address CHAR(50),
salary REAL
);
输出 CREATE TABLE 确认新表已在您的数据库中创建。

现在通过以下查询验证当前数据库中的表列表。您应该会看到创建的表 users。
\dt

创建新表后,您将通过 INSERT 查询向其中插入一些数据。
运行以下 INSERT 查询以将一些数据添加到表 users。
INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00);
INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);
输出 INSERT 0 1 确认新数据已添加到表中。

创建表并将一些数据添加到 PostgreSQL 后,您将学习如何从 PostgreSQL 检索数据并更新 PostgreSQL 中的可用数据。
检索数据和更新数据
在 PostgreSQL 上创建表并通过 INSERT 查询插入一些数据后,接下来您将学习如何通过 SELECT 查询检索数据以及如何通过 UPDATE 查询更新或更改特定列上的数据。
要检索数据,请运行以下 PostgreSQL 查询。这将从 PostgresSQL 表 users 中检索数据。
SELECT * FROM users;
您将收到这样的输出 - users 表中的所有数据都将显示在您的 PostgreSQL shell 中。

您还可以通过以下查询从特定列中检索数据。此查询将从特定列 name、age 和 salary 中检索数据。
SELECT name,age,salary FROM users;
以下是您将在终端上收到的输出。

接下来,运行以下 UPDATE 查询以更改 PostgreSQL 数据库中的数据。这会将列地址上的数据更新为列名称值 Paul 的 Sweden。
UPDATE users SET address = 'Sweden' WHERE name = 'Paul';
输出 UPDATE 1 确认数据已更新和更改。
运行以下查询以确保数据库中的数据已更改。
SELECT * FROM users;
您将收到与此类似的输出 - address 列已更新为 name=Paul。

至此,您已经了解了 PostgreSQL 查询在 PostgreSQL 服务器上创建用户、数据库、表、插入数据、检索数据和更新数据的基本用法。
清理环境
在此步骤中,您将通过删除您创建的数据库和用户来清理您的 PostgreSQL 15 服务器环境。因此,您已经清理了 PostgreSQL 15 安装,还学习了如何通过删除未使用的用户、数据库和表来清理 PostgreSQL 服务器。
在开始之前,请以默认 postgres 用户身份登录 PostgreSQL。
sudo -u postgres psql
使用 切换到数据库 testdb
\connect testdb;
运行以下查询以删除表 users,然后验证当前数据库中的表列表。
DROP TABLE users;
\dt
输出没有找到任何关系。确认表 users 已删除。

接下来切换到postgres数据库,删除数据库alice和testdb。
\connect postgres
DROP DATABASE alice;
DROP DATABASE testdb;
通过以下查询验证数据库列表。您将看到数据库 alice 和 testdb 都已从 PostgreSQL 服务器中删除。
\l
最后,运行以下查询以删除用户 alice。然后,验证 PostgreSQL 服务器上的用户列表。
DROP USER alice;
\du
您将收到一个输出,表明他的用户 alice 已从 PostgreSQL 服务器中删除
至此,您已经清理了 PostgreSQL 服务器,还学习了删除 PostgreSQL 服务器上的用户、数据库和表的基本查询。
结论
本指南教您如何在 Rocky Linux 9 服务器上安装最新版本的 PostgreSQL 15。您已经通过官方 PostgreSQL 存储库安装了 PostgreSQL,并且还学习了 PostgreSQL 身份验证的基本配置。
除此之外,您还学习了如何使用 PostgreSQL 服务器。从创建用户、更改用户密码、创建数据库和表、插入数据、查询数据、更新数据,到通过删除未使用的表、数据库和用户来清理 PostgreSQL 服务器。
PostgreSQL 是一种企业级 RDBMS(关系数据库管理系统),在互联网现代工业中应用最多。有了它,接下来你可能想查看和学习PostgreSQL的其他查询,或者你也可以学习如何部署高可用的多服务器PostgreSQL。