PostgreSQL 16 标志着数据库管理系统领域的重大更新。PostgreSQL 16 于 2023 年 9 月 14 日正式发布,引入了许多新功能和增强功能,巩固了其作为面向用户、管理员和开发人员的强大而多功能的数据库解决方案的地位。
以下是 PostgreSQL 16 的一些主要功能亮点:
- 并行化增强功能:PostgreSQL 16 允许 FULL 和内部右 OUTER 哈希连接的并行化,显著提高查询性能。
- 复制改进:它引入了从备用服务器进行逻辑复制的能力,并允许用户并行应用大型事务。
- 监控功能:添加 pg_stat_io 视图可以更深入地监控 I/O 统计数据。
- SQL/JSON 支持:此版本引入了 SQL/JSON 构造函数和身份函数,扩大了其数据处理能力。
- 真空冷冻性能:PostgreSQL 16 提高了真空冻结的性能,有助于高效的数据库维护。
- 正则表达式匹配:pg_hba.conf中的用户和数据库名称以及pg_ident.conf中的用户名的正则表达式匹配增强了安全性和灵活性。
现在,让我们继续技术操作并深入研究 PostgreSQL 16 的安装过程。
安装 PostgreSQL 16 的先决条件
要在 Ubuntu 上成功安装 PostgreSQL 16,请确保满足以下要求:
推荐的硬件和支持的 Ubuntu 版本
成分 | 要求 |
---|---|
处理器 | 1 千兆赫 (GHz) 或更快的兼容处理器 |
内存 | 2 GB 或更多 |
磁盘空间 | 512 MB HDD(数据或支持组件需要额外的磁盘空间) |
支持的版本 | Ubuntu 24.04(Noble), Ubuntu 22.04(Jammy), Ubuntu 20.04(焦点) |
其他要求
要求 | 描述 |
---|---|
网络连接 | 需要下载 PostgreSQL 16 及未来更新。 |
终端约定 | 所有终端命令都应以普通用户身份运行 sudo 特权。 |
CLI 命令 | 使用命令行界面 (CLI) 进行安装和设置。 |
导入 PostgreSQL APT 存储库
在安装 PostgreSQL 16 之前更新 Ubuntu
首先确保您的 Ubuntu 系统是最新的。此步骤对于维护系统稳定性和兼容性至关重要:
sudo apt update
接下来,升级所有过期的软件包:
sudo apt upgrade
安装 PostgreSQL 16 的初始软件包
为了协助安装数据库软件,请安装以下软件包:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
添加 PostgreSQL 16 APT 存储库
首先,导入 PostgreSQL GPG 密钥。这是为了确保您要安装的软件包是正版且未被篡改:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
选择正确的 PostgreSQL 16 存储库
现在,是时候根据您的需要选择合适的 PostgreSQL 16 存储库了。
用于生产/通用的稳定存储库
对于大多数用户来说,稳定的存储库是首选,尤其是在生产环境中。它会定期更新稳定且安全的版本:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
面向开发人员的快照或测试存储库
如果您处于开发或测试阶段,请考虑使用快照或测试存储库。但请记住,由于其稳定性较差,因此它们不适用于生产用途。
用于尖端测试的快照存储库
在此获取最新快照:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-snapshot main | sudo tee /etc/apt/sources.list.d/postgresql.list
最新功能的测试存储库
为了测试最新的功能,此命令将为您设置:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main | sudo tee /etc/apt/sources.list.d/postgresql.list
通过终端命令安装 PostgreSQL 16
刷新 APT 软件包索引源列表
添加稳定或测试 PostgreSQL 存储库后,更新存储库源列表非常重要。此操作可确保您的系统识别新添加的 PostgreSQL 存储库:
sudo apt update
通过 APT 命令安装 PostgreSQL 16
现在,让我们继续安装 PostgreSQL 16。此命令将安装 PostgreSQL 客户端和服务器:
sudo apt install postgresql-client-16 postgresql-16
验证 PostgreSQL 安装
安装完成后,确认 PostgreSQL 已正确安装并运行至关重要。此命令检查 PostgreSQL 服务的状态:
systemctl status postgresql
激活 PostgreSQL 16
如果 PostgreSQL 未处于活动状态,请使用以下命令启动 PostgreSQL 服务。这还可确保 PostgreSQL 随系统自动启动:
sudo systemctl enable postgresql --now
管理 PostgreSQL 16 服务
停止 PostgreSQL 16 服务器
要暂时停止 PostgreSQL 服务(例如进行维护或配置更改),请使用以下命令:
sudo systemctl stop postgresql
启动 PostgreSQL 16 服务器
当您准备启动 PostgreSQL 服务时,特别是在停止或初始安装之后,此命令会派上用场:
sudo systemctl start postgresql
重新启动 PostgreSQL 16 服务器
在更改配置或更新的情况下,通常需要重新启动。此命令重新启动 PostgreSQL 服务,应用任何新更改:
sudo systemctl restart postgresql
重新加载 PostgreSQL 16 服务器
要重新加载 PostgreSQL 服务而不中断其运行,请使用此命令。当您需要应用较小的配置更改时,它很有用:
sudo systemctl reload postgresql
检查 PostgreSQL 16 状态
要验证 PostgreSQL 服务的运行状态,包括它是否处于活动状态且正常运行,请使用:
systemctl status postgresql
在系统启动时启用 PostgreSQL 16
如果 PostgreSQL 未设置为自动启动,则此命令将启用它,确保它立即激活并在后续系统启动时激活:
sudo systemctl enable postgresql --now
PostgreSQL 16 的基本示例命令
访问 Postgres 用户帐户
在 PostgreSQL 中,“postgres”用户是默认的超级用户角色。此帐户对于执行管理命令至关重要。要切换到此帐户,请使用:
sudo -i -u postgres
登录账户后,进入PostgreSQL命令行界面:
psql
提示 postgres=#
确认您与 PostgreSQL 环境的连接。要退出,只需输入 exit
.
无需切换用户即可快速访问 PostgreSQL
如果不想改变用户账户,可以直接访问PostgreSQL,进行快速操作:
sudo -u postgres psql
此命令可节省日常任务的时间。要离开此界面,请键入 exit
.
创建新的 PostgreSQL 用户角色
PostgreSQL 的灵活性允许超级用户创建用户角色。要建立新的用户角色,请发出以下命令:
sudo su - postgres -c "createuser <username>"
代替 <username>
使用您想要的用户名。
启动新的 PostgreSQL 数据库
为您的用户设置新的数据库:
sudo su - postgres -c "createdb <database_name>"
代替 <database_name>
使用您数据库的预期名称。
为数据库分配用户权限
安全地分配数据库访问权限:
sudo -u postgres psql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
代替 <database_name>
和 <username>
根据需要。最后输入 exit
.
为 PostgreSQL 16 配置 UFW 防火墙
安装并激活 UFW 防火墙
确保系统上安装并激活了 UFW(简易防火墙)。UFW 简化了防火墙管理,对于保护网络流量至关重要:
sudo apt install ufw
sudo ufw enable
为 PostgreSQL 16 设置 UFW 规则
PostgreSQL 默认在端口 5432 上进行通信。有必要配置 UFW 以允许此端口上的流量,尤其是从远程位置连接时。
允许子网访问
要允许访问子网内的一系列 IP 地址,请使用以下命令:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
代替 192.168.1.0/24
与您的特定子网范围。
允许个人 IP 访问
要从单个 IP 地址授予对 PostgreSQL 的访问权限,请使用:
sudo ufw allow proto tcp from 192.168.1.0 to any port 5432
调整 192.168.1.0
您想要允许的 IP 地址。
这些只是基本示例。您应该考虑尽可能长期锁定任何面向公众的数据库。
配置 PostgreSQL 16
在 PostgreSQL 16 中启用远程访问
配置 PostgreSQL 以接受远程连接涉及从默认本地接口调整监听地址。
修改远程访问配置
访问 PostgreSQL 配置文件:
sudo nano /etc/postgresql/16/main/postgresql.conf
在“连接设置”部分中,更改 listen_addresses = 'localhost'
满足您的特定需求:
- 将“localhost”替换为单个 IP 所需的 IP 地址。
- 要允许所有接口上的连接,使用
listen_addresses = '*'
.
进行更改后,使用 CTRL+O 保存并使用 CTRL+X 退出。然后重新启动 PostgreSQL:
sudo systemctl restart postgresql
使用以下命令验证更改:
ss -nlt | grep 5432
在输出中,您应该看到端口 5432 处于活动状态。
配置 pg_hba.conf 以增强安全性
编辑 pg_hba.conf
用于微调访问控制的文件:
sudo nano /etc/postgresql/16/main/pg_hba.conf
自定义用户和数据库访问
在 pg_hba.conf
,您可以指定哪些用户和数据库可以连接,以及从哪些地址连接。以下是一些常见的配置:
- 用户特定访问:用特定的用户名替换‘all’,以限制仅限该用户访问。
- 特定于数据库的访问:指定特定的数据库,而不是允许访问所有数据库。
- 地址限制:定义特定的 IP 地址或范围(例如,
192.168.1.0/24
)来限制连接的发起位置。
选择身份验证方法
PostgreSQL 支持多种身份验证方法:
- MD5:需要密码,并用MD5加密。
- 密码:使用纯文本密码(安全性较低,不推荐用于生产)。
- 同行:依赖于操作系统级别的用户身份(本地连接常见)。
- 身份:类似于“peer”,通常用于网络连接。
- 紧急RAM-SHA-256:更安全的方法,推荐使用MD5或密码。
性能调优 postgresql.conf
为了优化性能,请考虑以下设置 postgresql.conf
:
- 共享缓冲区:调整 PostgreSQL 用于共享内存缓冲区的内存量。
- 工作内存:设置用于内部排序和散列操作的内存。
- 最大连接数:控制数据库的最大并发连接数。
监控和诊断
启用详细日志记录以深入了解数据库性能和问题:
- log_statement:设置为“全部”以记录执行的每个 SQL 语句。
- 日志持续时间:启用后,记录每个完成的 SQL 语句的持续时间。
结论
我们刚刚完成了在 Ubuntu 上设置 PostgreSQL 16 的全面指南,涵盖了从安装和配置远程访问到使用防火墙规则加强安全性的所有内容。请记住,虽然启动并运行 PostgreSQL 很棒,但真正的关键在于定期维护和安全检查。
有用的链接
以下是一些与在 Ubuntu Linux 上安装 PostgreSQL 16 相关的有用链接:
- PostgreSQL 16 发行说明:阅读 PostgreSQL 16 的发行说明,了解新功能、增强功能和错误修复。
- PostgreSQL GitHub 存储库:访问官方 PostgreSQL GitHub 存储库以访问源代码、报告问题并为开发做出贡献。
- PostgreSQL 文档:访问全面的 PostgreSQL 文档,获取详细的安装、配置和使用指南。
- PostgreSQL 社区:加入 PostgreSQL 社区,与其他用户联系,参与讨论并获得支持。