如何在 Fedora 40 或 39 Linux 上安装 PostgreSQL 14

PostgreSQL 14 是一个开源关系数据库管理系统,以其稳健性、可扩展性和广泛的功能集而闻名。PostgreSQL 14 中引入的关键功能之一是能够处理增量排序,这显著提高了特定工作负载的查询性能。此版本还增强了并行处理、清理和 JSON 处理,使其成为企业和开发环境的不二之选。尽管它比最新版本落后了几个版本,但 PostgreSQL 14 仍然是一个可靠且受到广泛支持的选项。

要使用命令行终端在 Fedora 40 或 39 上安装 PostgreSQL 14,您可以直接从 PostgreSQL RPM 版本导入并安装。此方法可确保您拥有最新版本并使未来的升级变得简单。

在安装 PostgreSQL 14 之前更新 Fedora

首先,更新您的 Fedora 系统以确保所有软件包都是最新的。此步骤有助于防止 PostgreSQL 安装期间发生潜在冲突。执行以下命令:

sudo dnf update --refresh

导入 PostgreSQL RPM GPG 密钥存储库

首先导入 PostgreSQL 存储库。此操作可确保访问最新的 PostgreSQL 版本。选择并导入与您的 Fedora Linux 版本相对应的存储库。

导入 PostgreSQL 14

注意:请记住为您的 Fedora 发行版导入正确的版本:

对于 Fedora 40,使用此命令:

sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm

对于 Fedora 39,命令略有不同:

sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm

禁用默认 PostgreSQL 模块(如果适用)

Fedora 的默认存储库通常包含 PostgreSQL 作为模块。为了优先从 PostgreSQL 存储库安装,建议禁用此默认模块。使用以下命令执行此操作:

sudo dnf -qy module disable postgresql

完成 PostgreSQL 14 安装

继续安装 PostgreSQL 14

使用此命令安装 PostgreSQL 14 服务器及其文档:

sudo dnf install postgresql14-server postgresql14-docs -y

此外,您可以按如下方式安装开发包。

sudo dnf install postgresql14-devel

最后,您可以安装一些常用的附加模块、二进制文件和库。

sudo dnf install postgresql14-libs postgresql14-odbc postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-tcl postgresql14-contrib postgresql14-llvmjit

初始化 PostgreSQL 14 数据库

安装后,您必须运行以下命令来初始化数据库;如果不这样做将导致 PostgreSQL 无法运行。

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

启用 PostgreSQL 14 Systemd 服务

默认情况下,PostgreSQL 未激活。使用以下命令立即启动该服务并在系统启动时启动。

sudo systemctl enable postgresql-14 --now

验证 PostgreSQL 14 安装

接下来,使用以下命令验证状态以确保软件已安装并激活并且没有错误。

systemctl status postgresql-14

PostgreSQL 14 的 Systemd 服务命令

管理 PostgreSQL 14 服务

PostgreSQL 数据库服务器在 Fedora 上作为名为“postgresql-14”的 systemd 服务运行。系统管理员可以使用一组对日常维护和故障排除至关重要的 systemd 命令来管理此服务。

停止 PostgreSQL 14 服务器

要停止 PostgreSQL 服务(可能是为了维护或配置更改),请使用以下命令:

sudo systemctl stop postgresql-14

启动 PostgreSQL 14 服务器

要启动 PostgreSQL 服务,尤其是在停止或初始安装后,请使用以下命令:

sudo systemctl start postgresql-14

重新启动 PostgreSQL 14 服务器

如果您需要应用新配置或重置 PostgreSQL 服务,则 restart 命令非常有用。它只需一个操作即可停止然后启动服务:

sudo systemctl restart postgresql-14

重新加载 PostgreSQL 14 服务器

reload 命令非常适合在不停止数据库的情况下应用配置更改。它可以刷新服务而不会中断数据库操作:

sudo systemctl reload postgresql-14

检查 PostgreSQL 14 服务状态

要验证 PostgreSQL 服务的运行状态,请使用此命令。它提供有关服务状态的信息,包括服务处于活动状态、空闲状态还是遇到问题:

systemctl status postgresql-14

配置 PostgreSQL 14

切换到 Postgres 14 账户

访问 Postgres 14 账户

在安装 PostgreSQL 期间,会自动创建一个名为“postgres”的用户帐户。此帐户与默认的 Postgres 角色相关联,该角色拥有超级用户权限。要访问 PostgreSQL 数据库,请使用以下命令切换到“postgres”帐户:

sudo -i -u postgres

进入 PostgreSQL 14 提示符

切换到“postgres”用户后,通过键入 psql 直接访问 PostgreSQL 提示符。成功连接后,终端提示符将更改为 postgres=#,表示与数据库建立了活动连接。

要退出 PostgreSQL 数据库,只需输入:

psql

访问 PostgreSQL 14 的替代方法

使用 Sudo 进行直接访问

或者,使用以下命令无需切换帐户即可与 PostgreSQL 数据库交互:

exit

切换 Postgres 帐户的替代方案

无需更改用户帐户即可与 Postgres 数据库交互的另一种方法是使用 sudo 命令直接连接。您可以输入以下命令执行此操作:

sudo -u postgres psql

由于此命令绕过了额外的终端命令,因此可以有效地与数据库快速交互。

要退出,与第一种方法一样,输入 exit。

exit

使用 PostgreSQL 14 创建用户和数据库

创建新的用户角色

只有具有 createrole 权限的超级用户和角色才能创建新角色。要创建用户,请使用以下命令:

sudo su - postgres -c "createuser <name>"

代替使用所需的用户名。

创建新数据库

接下来,为新创建的用户创建一个 PostgreSQL 数据库:

sudo su - postgres -c "createdb <namedb>"

代替使用所需的数据库名称。

授予权限

要向新用户授予新数据库的权限,首先以超级用户身份连接到 PostgreSQL 数据库:

sudo -u postgres psql

然后,授予新用户所有权限:

GRANT ALL PRIVILEGES ON DATABASE <usernamedb> TO <name>;

代替数据库名称和使用用户名。要退出,请键入 exit。

exit

为 PostgreSQL 14 配置 Firewalld

为 PostgreSQL 14 建立防火墙规则

保护 PostgreSQL 不仅仅涉及安装和运行服务;有效配置网络访问控制至关重要。这可以保护数据库并确保只有合法流量才能到达数据库。我们将介绍如何设置 Fedora 中的动态防火墙管理器 firewalld 来保护 PostgreSQL。

为 PostgreSQL 创建防火墙区域

首先,在防火墙中为 PostgreSQL 创建一个专用区域。此方法允许更精细地控制和更清晰地管理特定于 PostgreSQL 的规则:

sudo firewall-cmd --permanent --new-zone=postgres

该命令建立一个‘postgres’区域,隔离与 PostgreSQL 相关的防火墙规则,以便于管理。

限制对已知 IP 地址的访问

允许从单个 IP 地址访问

对于只有一个客户端或服务器访问 PostgreSQL 的情况:

sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4

将 1.2.3.4 替换为需要访问数据库的特定 IP 地址。

允许子网

在企业网络等环境中,可能有必要允许整个子网:

sudo firewall-cmd --permanent --zone=postgres --add-source=192.168.1.0/24

此处,192.168.1.0/24 代表子网。调整此值以匹配所需的网络范围。

授予多个特定 IP 访问权限

对于需要访问多个已知 IP 的情况:

sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.5

对每个 IP 地址重复此命令。

管理 PostgreSQL 14 的端口访问

配置默认 PostgreSQL 端口

对于使用默认端口的标准安装:

sudo firewall-cmd --permanent --zone=postgres --add-port=5432/tcp
自定义端口配置

如果 PostgreSQL 在非标准端口上运行(例如,5433):

sudo firewall-cmd --permanent --zone=postgres --add-port=5433/tcp

根据您的具体 PostgreSQL 配置更改端口号。

实施并验证新的防火墙规则

应用更改

要激活新规则,请重新加载firewalld:

sudo firewall-cmd --reload

此步骤确保新的配置立即生效。

检查配置结果

配置后,明智的做法是检查一下“postgres”区域的规则设置:

sudo firewall-cmd --list-all --zone=postgres

此命令显示“postgres”区域中的所有活动规则,以便验证setup.exp

PostgreSQL 14 的远程访问配置

设置远程访问监听接口

修改 PostgreSQL 配置

要启用对 PostgreSQL 的远程访问,需要调整 postgresql.conf 文件中的接口设置。此过程允许 PostgreSQL 接受来自各种来源的连接。

确保 FirewallD 设置到位以允许远程访问,如前面部分所述。

访问配置文件

要修改 PostgreSQL 14 的配置,请使用 nano 文本编辑器:

sudo nano /var/lib/pgsql/14/data/postgresql.conf
编辑收听地址

在“连接设置”部分,将 listen_addresses 从“localhost”更改为您的要求:

  • 在所有接口上监听:要接受来自任何来源的连接,请将 listen_addresses 设置为“*”。
listen_addresses = '*'
  • 在特定接口上监听:指定 IP 地址以限制与特定接口的连接。
listen_addresses = '192.168.1.100'

编辑后,保存文件(Ctrl + O,然后 Enter)并退出(Ctrl + X)。

重新启动 PostgreSQL 14 服务

通过重新启动 PostgreSQL 服务来应用更改:

sudo systemctl restart postgresql-14

确认监听端口

使用 ss 实用程序验证 PostgreSQL 是否正在监听指定的端口:

ss -nlt | grep 5432

如果成功,您应该会在终端端口中看到端口。

pg_hba.conf 中的高级远程连接设置

在 pg_hba.conf 文件中定制访问权限

为了对远程连接进行细粒度的控制,pg_hba.conf 文件提供了各种自定义选项。

编辑 pg_hba.conf

打开 pg_hba.conf 文件:

sudo nano /var/lib/pgsql/14/data/pg_hba.conf
Fedora Linux 上 PostgreSQL 14 的 pg_hba 配置文件
Fedora Linux 上 PostgreSQL 14 的 pg_hba 配置文件的示例屏幕截图
配置远程访问规则
允许特定用户和数据库

要限制从特定 IP 地址访问特定用户和数据库:

主机我的数据库我的用户 192.168.1.100/32 md5
允许子网

对于更广泛的访问,例如整个子网:

主机全部全部 192.168.1.0/24 md5
使用不同的身份验证方法

选择适合您环境的身份验证方法。对于基于密码的身份验证:

主机全部全部 0.0.0.0/0 md5

对于信任身份验证(注意安全风险):

主机全部全部 0.0.0.0/0 信任

配置所需规则后,保存并退出编辑器。

应用并验证更改

重新启动 PostgreSQL 以实现新的配置:

sudo systemctl restart postgresql-14

使用以下命令验证 pg_hba.conf 中的有效设置:

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

为 PostgreSQL 14 配置 SELinux

在 Fedora 上配置 PostgreSQL 14 时,正确设置 SELinux(安全增强型 Linux)至关重要。SELinux 通过强制执行访问控制策略增加了一层安全性。配置错误可能会导致访问被拒绝或服务中断等常见问题。

将 SELinux 设置为宽容模式以进行故障排除

临时调整 SELinux 模式

如果您在 PostgreSQL 启动或正常运行时遇到问题,请考虑暂时将 SELinux 设置为“Permissive”模式。此模式允许在“Enforcing”模式下被阻止的操作,但会记录下来以供审查:

sudo setenforce 0

监控 AVC 拒绝的日志

检查 SELinux 日志中是否存在 AVC(访问向量缓存)拒绝的情况:

sudo restorecon -Rv /var/lib/pgsql/14/data/

此命令有助于识别阻止 PostgreSQL 正常运行的 SELinux 策略。

为 PostgreSQL 14 配置 SELinux 策略

恢复默认 SELinux 上下文

要确保文件具有正确的 SELinux 上下文,请使用 restorecon 命令。PostgreSQL 目录或文件上的不正确上下文可能会导致访问问题:

sudo setsebool -P postgresql_can_rnetwork 1

此命令启用 postgresql_can_rnetwork 布尔值,允许网络连接。

高级 SELinux 配置

自定义 SELinux 政策

在更复杂的设置中,例如当 PostgreSQL 与其他服务或自定义端口交互时,可能需要创建自定义 SELinux 策略。利用 audit2allow 工具根据特定需求生成自定义策略模块。

应用自定义策略

创建自定义策略后,使用以下命令应用它们:

sudo semodule -i my_postgresql.pp

将 my_postgresql.pp 替换为您的策略文件的名称。

验证 SELinux 设置

检查 SELinux 状态

确认 SELinux 状态以确保它为您的 PostgreSQL 安装正确设置:

sestatus

验证文件上下文

验证与 PostgreSQL 相关的文件和目录是否具有适当的 SELinux 上下文:

ls -Z /var/lib/pgsql/14/data/

结论

在 Fedora 系统上成功安装 PostgreSQL 14 后,您可以利用其高级功能和强大的性能来满足您的数据库需求。定期检查 PostgreSQL RPM 版本的更新和未来升级,以使您的系统保持最新状态。

有关使用 PostgreSQL 的更多信息,请访问官方 文档.

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论