MySQL 8.4.0 LTS 变更解析:源码编译(类库变更)和密码插件
MySQL 8.4.0 LTS 已经发布 ,作为发版模型变更后的第一个长期支持版本,注定要承担未来生产环境的重任,那么这个版本都有哪些新特性、变更,接下来少安将带大家一起来 get 新知识点。
环境准备
本文涉及到源码编译,先说明下环境信息,操作系统为 Rocky 9。
Tips:
CentOS 7 即将 EOL,建议直接升级到 RHEL 9,如果考虑到费用或者国产化操作系统替代的问题,可以选择 Oracle Linux 9 或者 Rocky Linux 9。
具体信息如下:
1 | [mysql@shawnyan ~]$ cat /etc/redhat-release |
编译要求
如果你需要编译 MySQL 8.4.0 源码,那么 CMake 的最小版本需要升级到 3.14.6,之前是 3.5.1。
当然,我这里使用的是 3.20.2,符合最低要求。
编译选项
MySQL 源码编译不在需要添加 BOOST 相关选项:WITH_BOOST, DOWNLOAD_BOOST, DOWNLOAD_BOOST_TIMEOUT
相应代码结构也做了调整:mysql-server/tree/8.4/extra/boost/boost_1_84_0/boost
类库变更
MySQL 8.4.0 类库变更主要体现在3点,
- 之前用于 MySQL Router 中的 libevent 类库被移除。
- 由于代码实现变更,增加 libcno 类库,取代 libevent ,用于 HTTP 处理。[1]
- boost 版本从 1.77.0 升级到 1.84.0 。
插件变更
有如下几个插件被移除,如果延用之前的编译选项,并使用到这些插件,需要注意更改编译选项。
- authentication_fido, authentication_fido_client : 使用 authentication_webauthn 替代
CMake 的 -DWITH_FIDO
选项被移除。
- keyring_file : 使用 component_keyring_file 替代
CMake 的 -DINSTALL_MYSQLKEYRINGDIR
和 -DWITH_KEYRING_TEST
选项被移除。
-
keyring_encrypted_file : 使用 component_keyring_encrypted_file 替代
-
keyring_oci : 使用 component_keyring_oci 替代
-
openssl_udf : 使用 MySQL Enterprise Encryption 组件替代
关于 MySQL 组件替换插件的更多内容,请参阅:
源码编译
从 MySQL 官方网站下载 MySQL 8.4.0 源代码。
下载链接: https://dev.mysql.com/downloads/mysql/
解压,并执行编译配置。
1 | tar zxf mysql-8.4.0.tar.gz |
输出:
1 | [mysql@shawnyan build]$ cmake .. -DCMAKE_BUILD_TYPE=Debug -DEXTRA_VERSION="-ShawnYan" |
配置完成后,执行编译,开始进入漫长的等待。
1 | [mysql@shawnyan build]$ make |
编译完成,生成的文件约 17G,需要注意磁盘空间,不然编译还没结束磁盘先满了。
1 | [mysql@shawnyan mysql-8.4.0]$ du -sh build/ |
直接启动数据库。
1 | ./bin/mysqld --datadir=./data |
可以看到数据库服务已经顺利启动
1 | [mysql@shawnyan build]$ ./bin/mysqld --datadir=./data |
连接数据库查看版本信息。
1 | [mysql@shawnyan build]$ ./bin/mysql -uroot |
密码插件
创建一个测试用户,并查看其密码,确认默认使用 caching_sha2_password 插件。
1 | (root@localhost) [(none)] 14:06:28> create user u1 identified by '1'; |
如果使用 mysql_native_password 插件创建用户,则会遇到报错。
1 | (root@localhost) [(none)] 14:11:12> create user u1 identified with 'mysql_native_password' by '1'; |
这也是 MySQL 8.4.0 LTS 中非常重要的一个变更点。
mysql_native_password
认证插件已经被废弃,并且默认被禁用。
目前,仍然可以通过服务器启动选项 --mysql-native-password=ON
来启用。
但是,调用时会抛出警告。
1 | 2024-05-14T06:14:59.927757Z 9 [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' |
Tips:
-
建议尽快替换为
caching_sha2_password
认证插件。 -
从 MySQL 8.0.14 引入的双密码策略,并不支持两种认证插件混用。
总结
本章节我们介绍了编译 MySQL 8.4.0 LTS 源码需要注意几点变更,以及连接数据库时认证插件发生的变化。
下一节我们继续介绍其他新特性,欢迎关注本专栏。
往期精彩
- MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)
- Oracle 数据库全面升级为 23ai
- python-oracledb 已率先支持 Oracle 23ai
- 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
- SOP for Oracle 23ai:Python 连接 Oracle 的两种方法
– END –
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)
- Title: MySQL 8.4.0 LTS 变更解析:源码编译(类库变更)和密码插件
- Author: ShawnYan
- Created at: 2024-05-14 21:00:00
- Updated at: 2024-05-14 21:00:00
- Link: https://shawnyan.cn/2024/mysql/mysql-8-4-0-lts-change-compile-and-password-plugin/
- License: This work is licensed under CC BY-NC-SA 4.0.