error 1524 是因 mysql 8.4 默认不加载 mysql_native_password 插件所致,需先执行 install plugin mysql_native_password soname 'auth_socket.so' 启用插件,再 alter user 切换认证方式;同时须弃用存在 bug #115736 的 mysql-connector-j 8.4.0 驱动,改用 8.4.1+ 版本。

连接直接失败:Error 1524 不是配置错,是插件没加载
升级后应用连不上,报 Error 1524 (HY000): Plugin 'mysql_native_password' is not loaded,不是 my.cnf 写错了,是 MySQL 8.4 默认根本没加载这个插件。8.0 还只是“废弃”,8.4 已彻底移出默认加载列表。
- 临时救急:登录时强制用
caching_sha2_password方式:mysql -u root -p --default-auth=caching_sha2_password - 执行
INSTALL PLUGIN mysql_native_password SONAME 'auth_socket.so'(注意文件名是auth_socket.so,不是auth_mysql_native_password.so) - 对每个业务用户重置认证方式:
ALTER USER 'app_user'@'%' IDENTIFIED WITH mysql_native_password BY 'newpass' - 更稳妥的长期方案:批量迁移到
caching_sha2_password,但 JDBC 连接串必须带useSSL=true和显式serverTimezone,否则握手失败
驱动层真实 Bug:mysql-connector-j 8.4.0 会丢包卡顿
不是你的连接池或超时参数问题,是官方确认的驱动缺陷(Bug #115736)。现象非常典型:高并发下 HikariCP 频繁标记连接为 broken,报 SQLNonTransientConnectionException: Got an error writing communication packets,ErrorCode 1160;ARM64 下初始化固定卡 30 秒,x86_64 Linux 也普遍超 2 秒。
- 立即弃用
mysql-connector-j 8.4.0,改用8.4.1或更高版本(截至 2026 年 4 月,8.4.3已修复) - Spring Boot 3.2+ 用户需检查依赖树,避免间接拉入
8.4.0 - 若无法立刻升级驱动,可回退至
MySQL 8.0.45 + mysql-connector-j 8.0.45组合,无需改任何参数即恢复稳定
性能参数静默变更:innodb_change_buffering 和 innodb_io_capacity 默认值已改
这两个参数不报错、不警告,但行为已变,排查时容易误判为硬件或 IO 问题。
-
innodb_change_buffering从all改为none:影响非唯一二级索引的批量写入延迟毛刺和 QPS,若业务依赖该机制,需显式设回all并观察Innodb_buffer_pool_reads是否回升 -
innodb_io_capacity从200跳到10000:面向 NVMe SSD 的激进调优,若实际磁盘只有 5000 IOPS,InnoDB 会按 10000 节奏刷脏页,极易引发 I/O 饱和——务必用fio或iostat -x 1实测后设为稳态 IOPS 的 70%~80%
升级路径被硬性锁定:5.7→8.0→8.4,跳步必挂
官方强制两步走,跳过 8.0 直升 8.4 会导致系统表结构与数据字典不兼容,启动失败或查询异常,且无回滚路径。
- 即使你当前是 5.7,也必须先升到 ≥8.0.37 的 8.0 版本(低于此版本存在元数据升级 bug)
- 升级前必须验证三项硬条件:操作系统 ≥ CentOS 7.9 / Ubuntu 18.04 / Debian 10;
XA RECOVER返回空结果(否则 mysqld 启动 hang 住不报错);当前 8.0 版本 ≥8.0.37 - 原地升级时,
my.cnf中所有MASTER_*复制参数(如MASTER_HOST)必须改为SOURCE_*(如SOURCE_HOST),否则报Unknown system variable 'MASTER_HOST'











