MySQL 版本

2025年8月19日 | 阅读 6 分钟

版本控制是将独特的版本名称或数字分配给软件程序在开发和发布过程中形成的独特集合的过程。表示软件或程序初始发布的常用版本名称是 1.0 版。目前没有行业标准规则来决定版本号的格式。因此,每个公司都有自己为软件分配版本名称的方法。当软件和程序中引入了新功能、修复了错误、修补了安全漏洞时,版本号就会增加,以表明这些改进。

MySQL 的最新支持版本是 v5.8。它包含许多重要的更改,包括新增和移除的功能、修复的错误和安全问题等。此版本包含从 MySQL 8.0 到 MySQL 8.0.21 的发布历史。它从 2018 年 4 月开始可用,并于 2026 年 4 月结束支持。

当您要在系统中安装 MySQL 时,必须选择要使用的版本和分发格式。您可以通过两种方式安装 MySQL,第一种是开发版本,第二种是通用版本 (GA) 发布。开发版本提供最新功能,不建议用于生产。通用版本 (GA) 发布,也称为生产或稳定版本,主要用于生产。因此,您必须决定使用最新的通用版本。

让我们看看 MySQL 8.0 版本有什么新功能。

MySQL 8.0 中添加的功能

MySQL 8.0 版本中添加了以下功能

数据字典:它集成了事务性数据字典,用于存储有关数据库对象的信息。以前的版本将数据存储在元数据文件和非事务性表中。

原子 DDL 语句:它是一个原子数据定义语言语句,它将存储引擎操作、数据字典更新和与 DDL 操作相关的二进制日志合并到一个原子事务中。

升级过程:以前,新 MySQL 版本的安装会在下次启动时自动升级数据字典表,然后 DBA 预期手动调用 mysql_upgrade 命令以完成升级过程。在 MySQL 8.0.16 之后,DBA 不再需要手动调用 mysql_upgrade 命令来完成升级过程。

安全和帐户管理:添加了一些增强功能,以提高安全性并使其能够为 DBA 提供更大的帐户管理灵活性。

资源管理:现在,MySQL 允许您创建和支持资源组,将线程分配到特定组,以便它能够根据组可用的资源执行。组属性可以通过组中的线程控制其资源消耗。

表加密管理:现在,通过定义和强制执行加密默认值来全局管理表加密。default_table_encryption 变量或 DEFAULT ENCRYPTION 子句在创建模式和通用表空间时定义加密默认值。

InnoDB 增强:InnoDB 增强功能已添加到自增计数器、索引树损坏、memcached 插件、InnoDB_deadlock_detect、表空间加密功能、存储引擎、InnoDB_dedicated_server、zlib 库等等。

字符集支持:默认字符集现在从 latin1 更改为 utf8mb4。新字符集有许多新的排序规则,包括 utf8mb_ja_0900_as_cs。

JSON 增强:MySQL 的 JSON 功能中引入了以下增强或添加:内联路径 (->>) 运算符、json 聚合函数 JSON_ARRAYAGG() 和 JSON_OBJECTAGG()、实用函数 JSON_PRETTY()、JSON_STORAGE_SIZE()、JSON_STORAGE_FREE()。在对 json 值进行排序时,现在每个值都由排序键的可变长度部分表示,而不是固定的 1K 大小。它还添加了合并函数 JSON_MERGE_PATCH 来添加 2 个 json 对象和 JSON_TABLE() 函数。

数据类型支持:在数据类型规范中,它支持使用表达式作为默认值。

优化器增强:此版本添加了优化器增强,例如不可见索引、降序索引、支持创建函数索引。它可以将常量折叠用于列和常量值之间的比较。

窗口函数:此版本支持许多新的窗口函数,例如 RANK()、LAG() 和 NTILE()。

其他一些重要功能是

  • 它增强了正则表达式支持。
  • 错误日志已重写以使用 MySQL 组件架构。
  • 引入了新的备份锁,该锁允许 DML,同时防止可能导致不一致状态的操作。
  • 它增强了连接管理。现在,可以专门为管理连接配置 TCP/IP 端口。它在压缩方面提供了更多控制,以最大程度地减少通过连接发送到服务器的字节数。
  • 在以前的版本中,插件是用 C 或 C++ 编写的。现在,它必须只用 C++ 语言编写。MySQL 8.0.17 版本提供了克隆插件,允许本地或从远程服务器克隆 InnoDB 数据。克隆插件还支持复制。
  • 在此版本中,支持 TIMESTAMP 和 DATETIME 值的时间区。
  • 此版本还添加了 SQL 标准表值构造函数和显式表子句。

MySQL 8.0 中弃用的功能

MySQL 8.0 版本已弃用许多功能,并可能在未来的系列中移除。下面解释了其中一些功能

  • 字符集 utf8mb3 已弃用。
  • sha256_password 已弃用,并将在未来版本中移除。现在,默认认证将是 caching_sha2_password。
  • validate_password 插件将很快弃用,并可能在未来版本中移除。
  • ENGINE 子句将弃用于 ALTER TABLESPACE 和 DROP TABLESPACE。
  • FLOAT 和 DOUBLE 列类型的 AUTO_INCREMENT 和 UNSIGNED 属性已弃用。
  • 现在,它使用 JSON_MERGE_PRESERVE() 函数而不是 JSON_MERGE()。
  • SQL_CALC_FOUND_ROWS 修饰符、FOUND_ROWS() 函数、--no--dd--upgrade 服务器选项、mysql_upgrade 客户端和 mysql_upgrade_info 也已弃用。
  • 现在,指定 MYSQL 密码的 MYSQL_PWD 环境变量的使用已弃用。

MySQL 8.0 中移除的功能

可用,您的应用程序需要更新。

  • InnoDB_locks_unsafe_for_binlog 系统变量已移除,information_schema_stats 变量由 information_schema_stats_expiry 替换。
  • 移除了一些与帐户管理相关的功能,例如:用于创建用户的 GRANT 语句、PASSWORD() 函数、old_passwords 系统变量等。
  • 与 InnoDB 系统表相关的代码已过时,并已从 MySQL 8.0 版本中移除。基于 InnoDB 系统表的 INFORMATION_SCHEMA 视图现在由内部系统视图替换并重命名为
旧名称新名称
INNODB_SYS_COLUMNSINNODB_COLUMNS
INNODB_SYS_DATAFILESINNODB_DATAFILES
INNODB_SYS_FIELDSINNODB_FIELDS
INNODB_SYS_FOREIGNINNODB_FOREIGN
INNODB_SYS_FOREIGN_COLSINNODB_FOREIGN_COLS
INNODB_SYS_INDEXESINNODB_INDEXES
INNODB_SYS_TABLESINNODB_TABLES
INNODB_SYS_TABLESPACESINNODB_TABLESPACES
INNODB_SYS_TABLESTATSINNODB_TABLESTATS
INNODB_SYS_VIRTUALINNODB_VIRTUAL
  • 此版本还移除了一些查询缓存,例如 FLUSH QUERY CACHE、RESET QUERY CACHE 语句、SQL_CACHE SELECT 修饰符等。
  • sync_frm 系统变量已移除,因为 .frm 文件已过时。
  • multi_range_count、log_warning 和 sql_log_bin 系统变量的全局范围已移除。
  • 一些与加密相关的项,例如 ENCODE()、DECODE()、ENCRYPT() 等也已移除。
  • 它移除了 mysql_install_db 程序,而是使用 --initialize 或 --initialize_insecure 选项。

让我们通过下表了解 MySQL 以前版本的发布历史

版本名称发布日期支持结束日期描述
MySQL 5.114-11-20082013 年 12 月此版本包含 MySQL 5.0 到 MySQL 5.1.73 版本。要阅读 MySQL 的第一个版本,请点击此处
MySQL 5.503-12-20102018 年 12 月此版本包含 MySQL 5.5 到 MySQL 5.5.62 版本。
MySQL 5.605-02-20132021 年 2 月此版本包含 MySQL 5.6 到 MySQL 5.5.45 版本。
MySQL 5.721-10-20152023 年 10 月此版本包含 MySQL 5.7 到 MySQL 5.6.27 版本。
MySQL 8.019-04-20182026 年 4 月此版本包含 MySQL 8.0 到 MySQL 8.0.21 版本。

注意:Sun Microsystems 收购后,版本 6 已停止工作,现在它使用 MySQL Cluster 产品版本 7 和 8。

总结

(参考链接:https://tutorialspoint.org.cn/mysql/mysql-versions.htm)

了解 MySQL 版本对于维护安全、可靠和高效的数据库系统是必要的。开发人员现在可以访问以前 MySQL 版本(例如版本 5)中不可用的更强大的安全性和更复杂的功能。MySQL 的 5.0 和 6.0 版本已被 8.0 版本取代。尽管旧版本仍然可以下载,但它们不再受支持,不应在现代应用程序中使用。频繁的更新和版本检查保证了长期支持和增强的兼容性。组织可以通过调整版本来改进数据管理和未来的可伸缩性。

常见问题

1. MySQL 5.7 和 8.0 版本之间有哪些显著差异?

MySQL 8.0 的新功能包括通用表表达式 (CTE)、基于角色的访问控制和增强的查询优化器函数窗口函数。不止一个。为了更好地支持国际文本,默认字符集设置为 utf8mb4,元数据存储在数据字典中。

2. 还有人使用 MySQL 5.7 吗?

由于其生命周期结束 (EOL) 状态,MySQL 5.7 不再接收补丁或更新。为了及时了解 MySQL 的安全和功能更新。建议使用 8.0 版本。

3. 我的计算机上当前安装了哪个 MySQL 版本?

要确定计算机上安装的 MySQL 版本,请使用 MySQL 命令 SELECT VERSION () 或在 MySQL 提示符下使用终端命令 mysql --version。两种方法都会显示安装的版本号。


下一主题MySQL 数据类型