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
配置远程访问规则
允许特定用户和数据库
要限制从特定 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 的更多信息,请访问官方 文档.