MySQL 升级:MySQL Server 变更详解 (8.0.34 ~ 8.0.35)
MySQL Server 的持续更新为数据库管理员和开发者带来了一系列的改进、新特性和安全性增强。
2023 年下半年,MySQL Server 共发布了两个版本:
- MySQL 8.0.34 (2023-07-18)
- MySQL 8.0.35 (2023-10-25)
本文将详细探讨 MySQL 8.0.34 和 8.0.35,这两个版本的关键变更,帮助用户了解这些更新对现有系统可能产生的影响,并为升级做好准备。
重要变更
mysqlpump
MySQL 8.0.34,mysqlpump 客户端已弃用,因为它的功能可以通过其他方式实现,如 mysqldump 和 MySQL Shell Utilities。
1 | mysqlpump --version |
SQL 语法
CURRENT_USER() 现在可以作为 VARCHAR 和 TEXT 列在 CREATE TABLE
和 ALTER TABLE ... ADD COLUMN
语句中的默认值使用。
具體示例:
1 | mysql> create table t ( |
安全
1. validate_password.changed_characters_percentage
在 MySQL 8.0.34 版本中,新增密码验证的系统变量 validate_password.changed_characters_percentage
。
允许管理员配置和强制用户在更换 MySQL 账户密码时必须更改的最小字符数。这个验证设置是当前密码总字符数的百分比。
具体工作方式如下:
- 当用户尝试更改其 MySQL 账户密码时,服务器会检查新密码与当前密码之间的差异。
- 如果
validate_password.changed_characters_percentage
变量设置为某个百分比值(例如 50),那么新密码中至少有一半的字符必须与当前密码不同,否则密码更改将被拒绝。 - 这个新的功能为 DBAs 提供了更完整的密码管理控制,确保密码的复杂性和安全性。
例如,如果当前密码是 “1qaz@WSX”(8个字符),并且 validate_password.changed_characters_percentage
设置为 50%,
1 | mysql> select @@validate_password.changed_characters_percentage; |
那么用户在尝试设置新密码时,至少需要有 4 个字符与原密码不同。
如果新密码没有达到这个要求,MySQL 将不允许更改密码,并给出相应的错误信息。
1 | mysql> alter user shawnyan identified by '1qaz@WSx' replace '1qaz@WSX'; |
这里需要注意的是,该参数只在用户使用 alter user ... replace
语句时,方可生效,root 用户可以直接更改密码,不受此约束限制。
2. TLS_AES_128_CCM_8_SHA256
在 MySQL 8.0.35 版本中,TLS_AES_128_CCM_8_SHA256
密码套件被标记为弃用。
对于现有用户,这可能有以下影响:
- 警告信息:
尝试使用 tls_ciphersuites 或 admin_tls_ciphersuites 系统变量设置 TLS_AES_128_CCM_8_SHA256 密码套件时,MySQL 将发出警告。
1 | mysql> set global tls_ciphersuites = 'TLS_AES_128_CCM_8_SHA256'; |
1 | 2024-03-19T09:15:43.053275Z 19 [Warning] [MY-014067] [Server] Value for option 'tls_ciphersuites' contains cipher 'TLS_AES_128_CCM_8_SHA256' that is either blocked or deprecated (and will be removed in a future release). Please refer to the documentation for more details. |
- 使用 SQL 查看当前的系统变量配置:
1 | SELECT @@global.tls_ciphersuites, @@global.admin_tls_ciphersuites; |
- 配置更改:
用户需要更新他们的 MySQL 配置文件(如 my.cnf),移除或替换所有引用 TLS_AES_128_CCM_8_SHA256 的配置项。
1 | [mysqld] |
用户应该选择其他仍然受支持的密码套件,如 TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256 等。
- 提前规划:
由于弃用不意味着立即移除,用户可以利用这段时间来规划和测试新的密码套件配置,
确保在 TLS_AES_128_CCM_8_SHA256 被完全移除之前,系统能够平滑过渡到新的密码套件。
3. mysql_native_password
MySQL 8.0.34, mysql_native_password 认证插件已弃用,将在未来版本中移除。
如果继续使用,比如在创建密码时指定 mysql_native_password 认证插件,MySQL 服务器将发出警告。
1 | mysql> create user shawnyan1 IDENTIFIED WITH mysql_native_password BY '1qaz@WSX'; |
MySQL 服务器日志输出:
1 | 2024-03-19T09:27:50.763330Z 20 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead' |
其他
- 改变了二进制存档包的命名方式,以反映对 glibc2.17 或更新版本的 Linux 系统的兼容性。
具体地说,MySQL 8.0.33 对 glibc2.17, x86, 64-bit 只提供三个包:
1 | mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz |
MySQL 8.0.34 对 glibc2.17, x86, 64-bit 提供了如下 6 个包:
1 | mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz |
这些二进制包可以与使用 glibc2.17 或更高版本的 Linux 系统兼容,其中包括 EL7、EL8 和 EL9。
总结
随着 MySQL Server 8.0.34 到 8.0.35 的发布,用户可以期待更稳定、安全和高效的数据库操作体验。
在升级到此版本之前,建议用户详细阅读发布说明,评估影响,并在生产环境中进行充分的测试。
对于弃用的功能,用户应当开始规划迁移到其他支持的功能或方法上,以确保平滑过渡到未来的 MySQL 版本。
– END –
如果这篇文章为你带来了灵感或启发,就帮忙点『赞』or『在看』or『转发』吧,这对我非常重要,感谢!(๑˃̵ᴗ˂̵)
- Title: MySQL 升级:MySQL Server 变更详解 (8.0.34 ~ 8.0.35)
- Author: ShawnYan
- Created at: 2023-03-19 21:00:00
- Updated at: 2023-03-19 21:00:00
- Link: https://shawnyan.cn/2023/mysql/mysql-upgrade-change-2023-2/
- License: This work is licensed under CC BY-NC-SA 4.0.