MySQL 升级:MySQL Server 变更详解 (8.0.34 ~ 8.0.35)

MySQL 升级:MySQL Server 变更详解 (8.0.34 ~ 8.0.35)

ShawnYan Lv.6

MySQL Server 的持续更新为数据库管理员和开发者带来了一系列的改进、新特性和安全性增强。

2023 年下半年,MySQL Server 共发布了两个版本:

  1. MySQL 8.0.34 (2023-07-18)
  2. 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
2
3
$ mysqlpump --version
WARNING: mysqlpump is deprecated and will be removed in a future version. Use mysqldump instead.
mysqlpump Ver 8.0.34 for Linux on x86_64 (MySQL Community Server - GPL)

SQL 语法

CURRENT_USER() 现在可以作为 VARCHAR 和 TEXT 列在 CREATE TABLEALTER TABLE ... ADD COLUMN 语句中的默认值使用。

具體示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mysql> create table t (
-> n1 varchar(50) default (CURRENT_USER()),
-> n2 text default (CURRENT_USER())
-> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert t values row();
Query OK, 1 row affected (0.00 sec)

mysql> table t;
+----------------+----------------+
| n1 | n2 |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

安全

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
2
3
4
5
6
7
8
9
10
mysql> select @@validate_password.changed_characters_percentage;
+---------------------------------------------------+
| @@validate_password.changed_characters_percentage |
+---------------------------------------------------+
| 50 |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql> create user shawnyan identified by '1qaz@WSX';
Query OK, 0 rows affected (0.01 sec)

那么用户在尝试设置新密码时,至少需要有 4 个字符与原密码不同。
如果新密码没有达到这个要求,MySQL 将不允许更改密码,并给出相应的错误信息。

1
2
3
4
5
mysql> alter user shawnyan identified by '1qaz@WSx' replace '1qaz@WSX';
ERROR 4165 (HY000): The new password must have at least '4' characters that are different from the old password. It has only '0' character(s) different. For this comparison, uppercase letters and lowercase letters are considered to be equal.

mysql> alter user shawnyan identified by '1qaz#EDC' replace '1qaz@WSX';
Query OK, 0 rows affected (0.00 sec)

这里需要注意的是,该参数只在用户使用 alter user ... replace 语句时,方可生效,root 用户可以直接更改密码,不受此约束限制。

2. TLS_AES_128_CCM_8_SHA256

在 MySQL 8.0.35 版本中,TLS_AES_128_CCM_8_SHA256 密码套件被标记为弃用。

对于现有用户,这可能有以下影响:

  1. 警告信息:

尝试使用 tls_ciphersuites 或 admin_tls_ciphersuites 系统变量设置 TLS_AES_128_CCM_8_SHA256 密码套件时,MySQL 将发出警告。

1
2
3
4
5
mysql> set global tls_ciphersuites = 'TLS_AES_128_CCM_8_SHA256';
Query OK, 0 rows affected (0.00 sec)

mysql> set global admin_tls_ciphersuites = 'TLS_AES_128_CCM_8_SHA256';
Query OK, 0 rows affected (0.00 sec)
1
2
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.
2024-03-19T09:16:14.358076Z 19 [Warning] [MY-014067] [Server] Value for option 'admin_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.
  1. 使用 SQL 查看当前的系统变量配置:
1
SELECT @@global.tls_ciphersuites, @@global.admin_tls_ciphersuites;
  1. 配置更改:

用户需要更新他们的 MySQL 配置文件(如 my.cnf),移除或替换所有引用 TLS_AES_128_CCM_8_SHA256 的配置项。

1
2
3
4
5
[mysqld]
tls_ciphersuites=TLS_AES_128_CCM_8_SHA256:...

[client]
tls_ciphersuites=TLS_AES_128_CCM_8_SHA256:...

用户应该选择其他仍然受支持的密码套件,如 TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256 等。

  1. 提前规划:

由于弃用不意味着立即移除,用户可以利用这段时间来规划和测试新的密码套件配置,
确保在 TLS_AES_128_CCM_8_SHA256 被完全移除之前,系统能够平滑过渡到新的密码套件。

3. mysql_native_password

MySQL 8.0.34, mysql_native_password 认证插件已弃用,将在未来版本中移除。

如果继续使用,比如在创建密码时指定 mysql_native_password 认证插件,MySQL 服务器将发出警告。

1
2
mysql> create user shawnyan1 IDENTIFIED WITH mysql_native_password BY '1qaz@WSX';
Query OK, 0 rows affected (0.00 sec)

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'

其他

  1. 改变了二进制存档包的命名方式,以反映对 glibc2.17 或更新版本的 Linux 系统的兼容性。

具体地说,MySQL 8.0.33 对 glibc2.17, x86, 64-bit 只提供三个包:

1
2
3
mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-test-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar

MySQL 8.0.34 对 glibc2.17, x86, 64-bit 提供了如下 6 个包:

1
2
3
4
5
6
mysql-8.0.34-linux-glibc2.17-x86_64.tar.gz
mysql-8.0.34-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-test-8.0.34-linux-glibc2.17-x86_64.tar.gz
mysql-test-8.0.34-linux-glibc2.17-x86_64-minimal.tar.xz
mysql-8.0.34-linux-glibc2.17-x86_64.tar
mysql-8.0.34-linux-glibc2.17-x86_64-minimal.tar

这些二进制包可以与使用 glibc2.17 或更高版本的 Linux 系统兼容,其中包括 EL7、EL8 和 EL9。

总结

随着 MySQL Server 8.0.34 到 8.0.35 的发布,用户可以期待更稳定、安全和高效的数据库操作体验。

在升级到此版本之前,建议用户详细阅读发布说明,评估影响,并在生产环境中进行充分的测试。

对于弃用的功能,用户应当开始规划迁移到其他支持的功能或方法上,以确保平滑过渡到未来的 MySQL 版本。

– END –

logo.jpg

如果这篇文章为你带来了灵感或启发,就帮忙点『赞』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.
 Comments