跳到正文
原文
Make WordPress Security(安全)· Jonathan Desrosiers·· 2025-06-28精选编辑评分65

WordPress 提议明确 MySQL 与 MariaDB 数据库支持政策

X-post: Proposal: Clarifying Core’s Database Support Policy

编辑导读

WordPress 社区提议明确核心对 MySQL 与 MariaDB 的支持政策,仅推荐 LTS 版本,并将创新版本和 rolling GA 版本排除在生产环境推荐范围之外。文中援引截至 June 18, 2025 的数据称,超过 37% 的 WordPress 站点仍在使用已停止维护和安全更新的 EOL 数据库版本。

推荐理由

文章用当前使用数据梳理 MySQL 与 MariaDB 的发布模型,并提出只推荐 LTS 版本、区分生产环境支持范围的方案。

TL;DR 超过 37% 的 WordPress 网站正在运行已到达生命周期终点(EOL)且不再获得维护或安全更新的数据库软件版本。为推动更广泛地采用安全且受支持的数据库版本,WordPress 应明确规定,只有 MySQL MySQL 是一种关系型数据库管理系统。数据库是结构化的数据集合,用于存储内容、配置和其他选项。https://www.mysql.com 和 MariaDB 的 LTS 版本才正式受支持,排除生命周期较短或无法保证向后兼容的版本。

作为一个社区,我们经常倡导努力将软件和工具更新至最新版本。这通常会以要求用户升级 PHP WordPress 主要基于其架构构建所用的 Web 脚本语言。WordPress 要求 PHP 7.4 或更高版本 的形式呈现,也会涉及贡献者使用 Node.js 和 npm 等工具。数据库软件对网站健康同样重要,但历史上受到的关注远少于前者。

自 WordPress 早期以来,受支持的数据库类型所采用的发布模式已经发生了很大变化。因此,项目需要更新其官方政策,以确保清晰明确。更清晰的政策有助于人们更广泛地了解维护 WordPress 网站的期望和要求。

但在介绍拟议的变更之前,让我们先定义各种发布类型,并在概述几个可供讨论的事项之前考察当前的使用数据。

注意:如果你已经熟悉 MariaDB 和 MySQL 的发布模式,可以直接跳到本文的提案部分。

受支持的数据库软件

目前,正式支持用于运行 WordPress 的数据库软件有两种:MySQL 和 MariaDB。虽然 Playground 确实由 SQLite 提供支持,但标准版 WordPress 安装目前尚不支持 SQLite,除非安装该功能插件;该插件正在积极开发和测试中。

发布类型

两个软件项目都多次更改了用于引用版本的术语,导致表述混乱且不一致。为清晰起见,以下是与 MySQL 和 MariaDB 版本发布相关的不同术语。

注意:下文中的所有星号(*)均表示已到达生命周期终点(EOL)且上游不再支持的版本。此外,EOL 并不总等于“不受 WordPress 支持”(稍后将对此作进一步说明)。

长期支持(LTS)

两个项目都会发布 LTS 版本。这些是实际使用中最常见的版本。首次发布后,它们会获得 5 年的积极支持。首次发布后,数据格式不会更改,不会引入新功能,也不会移除功能。

MariaDB 旨在每年发布一个新的 LTS 版本,而 MySQL 则每 2 年发布一个新的 LTS 版本(从 8.4 开始)。迄今为止,被标记为 LTS 的版本如下:

版本项目首次发布EOL 日期
8.4MySQLApril 30, 2024April 2032
8.0MySQLApril 19, 2018April 2026
11.8MariaDBJune 5, 2025June 2030
11.4MariaDBNovember 22, 2024May 29, 2029
10.11MariaDBFebruary 16, 2023February 16, 2028
10.6MariaDBJuly 6, 2021July 6, 2026
10.5*MariaDBJune 24, 2020June 24, 2025
10.4*MariaDBJune 18, 2019June 18, 2024

以下版本曾被视为 LTS 版本,但并未明确标注为 LTS:

版本项目初始发布日期EOL 日期
5.7*MySQL2015 年 10 月 21 日2023 年 10 月 21 日
5.6*MySQL2013 年 2 月 5 日2021 年 2 月 5 日
5.5*MySQL2010 年 12 月 3 日2018 年 12 月 3 日
5.1*MySQL2008 年 11 月 14 日2013 年 12 月 31 日

创新版本

尽管两个项目都使用这一分类,但只有 MySQL 项目目前实际按照本节所述方式使用它(有关 MariaDB 当前如何使用该名称,请参阅下一节)。创新版本旨在让用户提前获得新功能和改进,无需等待完整的 2 年即可发布下一个 MySQL LTS 版本。

新的创新版本包含以下类型的变更:

  • 计划在下一个 LTS 中推出的新功能
  • 安全修复
  • 错误修复
  • 新的弃用项
  • 移除功能
  • 行为变更。

这些版本已正式发布,可用于生产环境。它们每季度发布一次(每 3-4 个月一次)。当下一个创新版本发布时,上一版本将不再受支持,包括安全修复在内。由于每个创新版本的生命周期极短,必须持续关注并定期升级,才能继续获得支持和安全保障。

以下是 MySQL 创新版本的列表。

版本初始发布日期EOL 日期
9.32024 年 4 月 15 日2025 年 7 月
9.2*2025 年 1 月 21 日2025 年 4 月 15 日
9.1*2024 年 10 月 14 日2025 年 1 月 21 日
9.0*2024 年 7 月 1 日2024 年 10 月 15 日
8.3*2024 年 1 月 16 日2024 年 7 月 1 日
8.2*2023 年 10 月 25 日2024 年 1 月 16 日
8.1*2023 年 7 月 18 日2023 年 10 月 25 日

MariaDB 使用此标签大约 2 年。在此期间,他们也会每季度发布一个新的创新版本。不过,其创新版本在首次正式发布后会继续获得 1 年的支持。这些版本与 MySQL 的另一个不同之处在于,使用时建议保持谨慎。截至本文发布日期,所有 MariaDB 创新版本均已到达 EOL。

版本初始发布日期EOL 日期
11.2*2023 年 11 月 21 日2024 年 11 月 21 日
11.1*2023 年 8 月 21 日2024 年 8 月 21 日
11.0*2023 年 6 月 7 日2024 年 6 月 6 日
10.10*2022 年 11 月 17 日2023 年 11 月 14 日
10.9*2022 年 8 月 22 日2023 年 8 月 22 日
10.8*2022 年 5 月 21 日2023 年 5 月 20 日
10.7*2022 年 2 月 14 日2023 年 2 月 9 日

滚动 GA(仅限 MariaDB)

尽管两者在某些方面相似,但 MariaDB 现在已用滚动 GA 版本取代创新版本。滚动 GA 版本每季度发布一次(3-4 个月一次),并且不会收到任何 patch 一种特殊的文本文件,通过标识新增、移除和修改的文件及行来描述代码变更。它也可以称为 diff。补丁可以应用到代码库中以供测试。 版本(GA 版本为最终版本)。一旦新的滚动版本发布,上一滚动版本的所有支持都会终止。

“创新版本”这一术语仍在使用,但现在指的是每个滚动版本的预览版(X.Y.0)和 RC 版本发布周期中的最后几个阶段之一,表示该版本有可能成为面向公众的最终版本。另请参阅 alpha(beta)。(X.Y.1)预发布版本。滚动 GA 版本旨在用于生产环境,而创新版本并非如此。

滚动版本初始发布日期EOL 日期
12.1(当前处于 preview 创新版本)待定
12.0(当前为 RC 创新版本)待定
11.7*2025 年 2 月 13 日2025 年 5 月 12 日
11.6*2024 年 11 月 22 日2025 年 2 月 13 日
11.5*2024 年 8 月 15 日2024 年 11 月 21 日
11.3*2024 年 2 月 19 日2024 年 5 月 16 日

主要版本 以版本号前两位数字(3.6)标识的版本,是完整发布周期和功能开发的重点。WordPress 的主要版本采用十进制递增方式,因此 2.8、2.9、3.0 和 3.1 在范围上是连续且可比较的。

MySQL 对主要版本的称呼方式与 WordPress 相同(X.(Y+1))。

对 MariaDB 而言,这一术语在不同时期有着不同的含义。

10.3 及更早版本X.(Y+1)每个新版本
10.4-11.2X.(Y+1)由于存在二进制不兼容性和新增功能,每个版本都被视为主要版本。LTS 或短期版本是更常用的描述方式,因为它们表示支持期限(类似于 WordPress)。
如今 *(>= 11.3)(X+1).0仅当第一位数字发生变化时(类似于 PHP)。

虽然当时还不存在 LTS 这一 designation,但 10.3 及更早版本也以类似方式处理。

  • 支持 3-5 年(有时更长)
  • 提供错误修复和安全更新
  • 次要(X.Y.(Z+1))版本有时也会包含新功能,但始终会保持兼容性。

所有 MariaDB 主要版本 <= 10.3 均已结束生命周期(EOL)。为完整起见,列出如下:

MariaDB 主要版本 <= 10.3首次发布日期EOL 日期
10.3*May 25, 2018May 25, 2023
10.2*May 23, 2017May 23, 2022
10.1*October 17, 2015October 17, 2020
10.0*March 31, 2014March 31, 2019
5.5*April 11, 2012April 11, 2020
5.3*February 29, 2012March 1, 2017
5.2*November 10, 2010November 10, 2015
5.1*February 1, 2010February 1, 2015

虽然一些在线资源在这些版本旁标有 LTS 标签,但它们从未被正式如此标注。

短期版本(仅限 MariaDB)

这一术语后来被创新版本取代。除上述创新版本中列出的 MariaDB 版本外,这也适用于 MariaDB 10.4。截至本文发布日期,所有短期版本均已结束生命周期(EOL)。

当前数据库使用数据

以下是截至 2025 年 6 月 18 日 WordPress.org Stats 页面上的使用数据,以几种不同方式进行汇总:

按软件划分

版本使用量
MariaDB – 所有版本52.8%
MySQL – 所有版本47.2%

按版本类型划分

发布类型使用量
MariaDB LTS(包括没有正式 LTS designation 的旧主要版本)51.17%
MySQL LTS(包括没有 LTS designation 的旧主要版本)46.74%
MariaDB 创新/短期/滚动版本1.52%
MySQL 创新版本0.07%
其他0.5%

按支持状态划分

支持状态使用量
EOL 版本(MariaDB)11.43%
EOL 版本(MySQL)26.01%
受支持(MariaDB)41.56%
受支持(MySQL)21.05%

观察结果

使用数据中有一些值得注意的情况。

  • 截至 2025 年 3 月,MariaDB 所支持的 WordPress 站点数量现已超过 MySQL。这一点尤其引人注目,因为截至 2024 年 1 月,两者的占比约为 63%/37%,当时 MySQL 占优。许可成本上涨以及 2023 年和 2024 年广泛使用的发行版发生变化,很可能是推动这一激增的重要原因。
  • 超过 37% 的 WordPress 站点正在运行已结束生命周期、不再获得维护或安全更新的数据库软件版本。
  • 所有创新/短期/滚动版本中,采用率最高的是 MariaDB 11.3,达到 0.15%。
  • 在任何时间点,其他创新/短期/滚动版本的采用率都未曾超过 0.10%。

WordPress 中数据库支持的当前状态

尽管 MySQL 和 MariaDB 采用不同的发布模式,并且会以不同的方式、非按顺序地停止支持,但 WordPress 的支持策略非常明确。截至本文发布之日,支持策略如下:

  • 推荐:MySQL >= 8.0 或 MariaDB >= 10.6
  • 必需:MySQL 或 MariaDB >= 5.5.5

几点说明:

  • MariaDB 10.5 已于 6 月 24 日进入 EOL。推荐版本已于 2025 年 6 月 18 日更新为 >= 10.6(参见 #60319 和 #meta-8013)。
  • 最低必需版本上次提升是在 2023 年末(参见 [57173])。

目前所述策略缺乏关于支持哪些发布类型的任何指导。如上所示,情况复杂且令人费解。该策略应适当扩展,以涵盖发布类型,而不仅仅是版本。

提案:明确受支持的发布类型

尽管创新版本被称为生产级版本,但考虑到大多数 WordPress 站点,它们仍存在若干缺点。

  • 创新/滚动发布中包含的功能和变更被视为稳定,但在未来的发布中仍可能被修改,甚至完全移除。在纳入 LTS 版本之前,任何功能都不能视为受支持。
  • 这些版本生命周期短暂,因此在发布时很难确保与 WordPress 的兼容性。根据发布时间的重叠情况,两个(或更多)创新/滚动版本可能会在主要的 WordPress 版本之间发布。
  • 其极短的生命周期可能导致大量站点运行不安全的版本。
  • 更新数据库软件通常取决于站点所有者无法控制的因素(等待服务器发行版更新并通过你的托管服务提供、平台兼容性限制、合规/许可要求等)。
  • 对于这两个项目而言,更新这些发布类型都很复杂。更新必须按顺序进行。例如,不支持从 9.1 升级到 9.3(必须先将 9.1 更新为 9.2,然后才能更新为 9.3)。升级到下一个 LTS 时则无需遵循此要求。
  • 过去两年中,即使合并不同数据库类型的数量来看,这些发布类型的使用率也不高。
  • 由于这些版本中的变更不保证向后兼容,承诺对这些版本提供完整兼容支持并不是合理利用贡献者的时间,而且可能导致代码更难维护。

对数据库建议的变更

本提案建议按如下方式更新运行 WordPress 的建议:

  • 保持不变:应继续将上游仍在积极支持的最旧 LTS 版本作为推荐的最低版本。
  • 在 Requirements 页面、Core Core 是一组运行 WordPress 所需的软件。Core 开发团队负责构建 WordPress。/Hosting/Support/Other? Handbooks 中添加:明确不建议生产站点使用创新版本和滚动 GA 版本。 
  • 在 Hosting Handbook 中添加:明确建议托管公司不要将 Innovation 和 Rolling GA 版本作为新站点的默认版本。

WordPress 的 PHPUnit 测试工作流目前使用最新的 MySQL Innovation 版本和 MariaDB rolling GA 版本运行测试套件。这种做法有助于让贡献者意识到潜在的兼容性问题和不兼容变更,以便在下一个 LTS 版本之前解决这些问题。这项做法将继续沿用。

因此,可以合理预期 WordPress 在运行这些版本时问题极少(如果有的话)。但这并无保证,因为贡献者必须权衡为兼容性而进行更改的收益,毕竟该功能在下一个 LTS 版本发布前发生更改或被移除的可能性并非为零。

由于 Innovation 和 rolling GA 版本从未获得支持,因此在考虑更改运行 WordPress 所需的 MariaDB/MySQL 最低版本时,只有 LTS 版本才符合新的最低版本条件。 

总而言之,用户可以自由运行 Innovation 和 rolling GA 版本,但需自行承担风险。

其他考量事项

作为其中一部分,还应探索进一步教育和赋能用户的方法。

  • 是否应扩展 servehappy,在用户的网站运行时使用过时或不受支持的 MariaDB/MySQL 版本时向其显示仪表板通知(见 #63634)?
  • Site Health 中的数据库检查能否提供更多上下文,用于检测 Innovation/rolling GA 版本,并说明为什么用户应考虑改用 LTS 版本?
  • 能否增强 WP-CLI WP-CLI 是 WordPress 的命令行界面,用于以编程方式执行管理和开发任务。项目页面为 http://wp-cli.org/ https://make.wordpress.org/cli/,以便就这些高风险发布类型提供恰当建议?
  • 是否需要更改任何 meta Meta 是一个指代群体内部运作机制的术语。对我们而言,它是指负责 WordCamp Central 和 Make WordPress 等内部 WordPress 网站的团队。,以更好地告知网站这些发布类型未获得明确支持?
  • 与自动更新相关的类是否需要任何更改?

共同协作

可靠且受支持的数据库软件是 WordPress 网站性能、安全性和持久发展的基础。长期以来,推动主机和网站所有者进行升级的工作一直较为有限,且优先级也不一致。明确 WordPress 支持并兼容的数据库发布类型,是迈出的重要第一步。它使贡献者、主机和网站所有者能够转向更安全、更可持续的 MariaDB 和 MySQL 版本。

感谢 @johnbillion、@flixos90、@l1nuxjedi,以及 @annezazu 协助进行同行评审。

#database、#mariadb、#mysql、#site-health

来源:Make WordPress Security(安全) · https://make.wordpress.org/security/2025/06/28/xpost-proposal-clarifying-cores-database-support-policy/

部分链接为推广/关联链接。