本页内容
- 准备工作
- 添加 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 仓库。

使用以下命令添加适用于 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

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

现在,运行以下命令刷新 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

安装 PostgreSQL 后,运行以下命令初始化 PostgreSQL 的数据和配置。
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

现在,运行以下 systemctl 命令来启动并启用 PostgreSQL 15 服务。这将在默认端口 5432 上启动 PostgreSQL 服务,并使 PostgreSQL 服务在系统启动时自动运行。
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15
最后,运行以下命令验证 PostgreSQL 服务,确保该服务正在运行。
sudo systemctl status postgresql-15
如果正在运行,你应该会看到类似 ' active (running) ' 的输出。

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
在底部一行,你应该会看到如下的默认配置:

这意味着对于每一个本地连接,都将使用 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 用户的密码,你会遇到类似这样的错误:

修改 postgres 用户密码
在本节中,你将设置并修改默认 PostgreSQL 用户 ' postgres ' 的密码。
首先,通过本地认证登录到 PostgreSQL 服务器。
sudo -u postgres psql
现在,运行以下查询来设置默认 ' postgres ' 用户的密码,然后输入 ' quit ' 退出。另外,请务必将以下密码替换为你自己的密码。
ALTER ROLE postgres WITH PASSWORD 'NewP4ssw0rd';
quit

在 ' postgres ' 用户密码修改完成后,运行以下命令来验证你的密码。当系统提示时,输入 ' postgres ' 用户的密码。
sudo -u postgres psql -h localhost -U postgres
登录后,运行以下查询来检查详细的连接信息。你应该会看到你已使用用户 ' postgres ' 连接到了 PostgreSQL 服务器 ' localhost ',目标数据库为 ' postgres '。
\conninfo

在 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

输入 ' quit ' 退出 PostgreSQL 服务器。
quit
接下来,运行以下命令,使用新用户 ' appuser ' 连接到目标数据库 ' postgres '。当系统提示时,输入用户 ' appuser ' 的密码。
sudo -u postgres psql -h localhost -U appuser -d postgres
登录后,运行以下查询来验证当前连接。你应该会看到你已通过新用户 ' appuser ' 登录到 PostgreSQL,数据库为 ' postgres '。
\conninfo

现在,运行以下查询创建一个名为 ' appdb ' 的新数据库,默认所有者为 ' appuser '。
CREATE DATABASE appdb OWNER appuser;
然后,验证 PostgreSQL 服务器上可用的数据库列表。如果成功,你应该会看到数据库 ' appdb ' 出现在 PostgreSQL 中,所有者为 ' appuser '。
\l

现在你可以使用 ' \connect ' 查询从 ' postgres ' 数据库切换到新数据库 ' appdb '。然后验证当前连接。
\connect appdb;
\conninfo
此时,你现在应该已经切换到了新数据库 ' appdb '。

输入 'quit' 退出 PostgreSQL 服务器,然后使用以下命令通过用户 ' appuser ' 验证到新数据库 ' appdb ' 的连接。
sudo -u postgres psql -h localhost -U appuser -d appdb
当系统提示时,输入 'appuser' 的密码。登录后,检查连接状态。
\conninfo
你应该会看到你已通过用户 ' appuser ' 连接到了新数据库 ' appdb '。

至此,你已经在 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

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

向表中插入数据
在表 '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);

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

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

在 PostgreSQL 中更新数据
运行以下查询更新表 ' teachers ' 中的当前数据。这将更新 ' name ' 列值为 ' Lisa ' 的行的 ' address ' 列。成功后,你应该会看到类似 UPDATE 1 的输出。
UPDATE teachers SET address = 'France' WHERE name = 'Lisa';
现在运行以下查询来验证新更新的数据。你应该会看到 ' Lisa ' 的 ' address ' 列已更改为 ' France '。
SELECT * FROM teachers WHERE name = 'Lisa';

删除数据库和用户
为了清理你的环境,你将删除所创建的数据库和用户。你将要从 PostgreSQL 服务器上删除数据库 'appdb' 和用户 'appuser'。
首先,你必须使用以下查询切换到 ' postgres ' 数据库。
\connect postgres
运行以下查询删除数据库 ' appdb ',然后验证 PostgreSQL 服务器上的数据库列表,数据库 ' appdb ' 应该已被移除。
DROP DATABASE appdb
\l

现在输入 ' quit ' 退出当前以 ' appuser ' 身份登录的会话。在从 PostgreSQL 中删除用户 ' appuser ' 之前需要这样做。
quit
接下来,使用以下命令以默认 PostgreSQL 用户 ' postgres ' 身份登录。
sudo -u postgres psql
登录后,使用以下查询删除用户 ' appuser '。如果成功,你应该会看到类似 DROP ROLE 的输出。
DROP user appuser;
现在使用以下查询验证 PostgreSQL 上可用的用户列表。用户 ' appuser ' 应该已从 PostgreSQL 中删除。

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