PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 11.4、10.9、9.6.14、9.5.18 和 9.4.23,以及 PostgreSQL 12 的第二个测试版。此版本修复了一个安全问题以及自 5 月份上次累积更新以来的 25 多个错误。
此版本是在正常更新发布计划之外发布的,因为该安全漏洞被认为非常严重,需要尽快分发修复程序。 运行 PostgreSQL 10、PostgreSQL 11 或 PostgreSQL 12 测试版的用户应尽快升级。
所有其他用户应计划在下次计划停机时应用此更新。
此版本修复了一个安全漏洞
受影响的版本:10、11、12 测试版。
经过身份验证的用户可以通过将自己的密码更改为精心构造的值来创建基于堆栈的缓冲区溢出。除了能够使 PostgreSQL 服务器崩溃之外,还可以进一步利用它来以 PostgreSQL 操作系统帐户的身份执行任意代码。
此外,恶意服务器可能会在 SCRAM 身份验证过程中发送一条专门构造的消息,并导致启用 libpq 的客户端崩溃或以客户端的操作系统帐户身份执行任意代码。
此问题通过升级并重新启动 PostgreSQL 服务器以及 libpq 安装来修复。我们鼓励所有运行 PostgreSQL 10、11 和 12 测试版的用户尽快升级。
PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。
此更新还修复了自 5 月份上次累积更新以来的 25 多个错误。其中一些问题仅影响版本 11,但许多问题影响所有受支持的版本。
其中一些修复包括
pg_dump
现在使用 CREATE TABLE
和 ALTER TABLE .. ATTACH PARTITION
重新创建表分区,而不是在创建命令中包含 PARTITION OF
initdb
如何确定要选择哪个系统时区(如果该时区存在等效名称)。此外,明确优先选择 UTC
而不是 UCT
ALTER TABLE .. ALTER COLUMN TYPE
失败的问题COMMENT
命令失败的问题json_to_record()
和 json_populate_record()
中 JSON 字符串文字到 JSON 类型输出列的转换{1,1}
量词的不正确优化INCLUDE
子句覆盖的列的边缘情况失败期间的问题,该问题在 VACUUM 期间会显示错误。如果此问题影响您,则需要重新索引特定索引pg_dump
和 pg_dumpall
为数据库和表空间发出的 GRANT 命令的顺序reindexdb
中的误导性错误报告vacuumdb
返回正确的状态contrib/auto_explain
以避免在并行查询中引起问题,这会导致诸如“在 shm TOC 中找不到键 N”之类的失败contrib/postgres_fdw
中考虑本地 BEFORE ROW UPDATE
触发器可能导致的数据修改SQL_ASCII
且我们尝试记录非 ASCII 字符串时,避免失败所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
如果您的使用 INCLUDE
子句的 B 树索引之一受到上述问题的影响,则需要重新索引任何受影响的索引。此问题会在 VACUUM 期间根据发生的错误显示。您可以在此处阅读有关重新索引的更多信息
https://postgresql.ac.cn/docs/current/sql-reindex.html
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;有关详细信息,请参阅早期版本的发行说明。
PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复。有关更多信息,请参阅我们的版本控制策略。
这包括版本 12 的第二个测试版。PostgreSQL 项目将根据测试的需要发布其他测试版,然后发布一个或多个候选版本,直到 2019 年底最终发布。有关更多信息,请参阅测试版测试页面。