MySQL 8.4 启动时如果一直卡在“activating (start)”状态,通常是 innodb_log_file_size 配置值与磁盘中的 ib_logfile0 实际字节大小不一致导致的。此时应先停止 MySQL 服务,再通过 ls -lh 查看真实文件大小,并将该参数精确调整为一致的数值。另一种处理方式是删除 ib_logfile* 文件后,修改 innodb_redo_log_capacity 并重新启动服务。

MySQL 8.0 原地升级到 MySQL 8.4 失败时,问题往往不在升级步骤本身,而是在启动前就卡在配置校验、插件加载或环境兼容性检查阶段——也就是说,mysqld 实际上根本没有成功运行起来,但日志里可能只看到“activating (start)”甚至空白信息。排查这类故障时,必须从错误日志开头逐行分析,而不是反复直接重试启动。
启动卡在activating状态,本质上多半是InnoDB日志文件大小不匹配
这是 CentOS、Ubuntu 等 Linux 系统上最常见也最容易被忽视的 MySQL 8.4 启动失败原因之一:旧的 ib_logfile0 物理文件大小与配置文件中的 innodb_log_file_size 不一致时,mysqld 往往不会明显报错,也不会立即退出,而是一直停留在启动流程中间。
- 停止服务后,先用
ls -lh /var/lib/mysql/ib_logfile*查看实际日志文件大小,并确认对应的真实字节数 - 将
my.cnf中的innodb_log_file_size修改为**完全一致的数字**,例如innodb_log_file_size = 134217728(不要直接写成128M) - 如果需要调整 redo 日志容量,必须先删除
ib_logfile*文件,同时确认之前已经执行过SET GLOBAL innodb_fast_shutdown = 0
报Unknown system variable 'MASTER_HOST',通常说明复制配置语法已经过期
在 MySQL 8.4 中,所有 MASTER_* 复制相关参数都已被彻底弃用。系统不会温和提示“参数名称已变更”,而是会直接判定配置无效并拒绝加载,从而导致 MySQL 启动失败或原地升级失败。
- 将
my.cnf中所有MASTER_HOST、MASTER_PORT、MASTER_USER全部替换为SOURCE_HOST、SOURCE_PORT、SOURCE_USER CHANGE MASTER TO语句也要同步改为CHANGE REPLICATION SOURCE TO(注意不是CHANGE SOURCE TO)- 如果实例已启用主从复制或复制通道,升级前要先执行
STOP REPLICA,否则启动过程中仍可能尝试解析旧语法并直接失败
Error 1524: Plugin 'mysql_native_password' is not loaded,问题本质并不是密码错误
这个报错通常和账户密码本身无关,而是因为认证插件根本没有被正确加载。对于需要兼容旧客户端的场景,mysql_native_password=ON 必须写在 [mysqld] 段落中,并且不能与 default_authentication_plugin 同时混用,否则很容易引发 MySQL 8.4 启动异常或认证失败。
- 检查配置文件中是否只保留这一行:
mysql_native_password=ON(不要在等号右侧加引号,也不要写成default_authentication_plugin=mysql_native_password) - 重启 MySQL 后执行:
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'mysql_native_password';,确认结果必须显示为ACTIVE - 如果仍然失败,继续检查
plugin_dir路径是否正确,并通过ls -l $(mysql --help | grep "plugin" | awk '{print $NF}')/auth_socket.so确认插件文件存在
配置验证通过但服务依然起不来,优先排查 GLIBC 版本与路径空格问题
在 Windows 环境以及较旧的 Linux 发行版中,这两类问题非常常见。很多时候错误日志只会显示类似“Could not open required defaults file”这样的模糊提示,但真正原因其实是系统运行环境不满足要求,或者 MySQL 安装路径、数据目录路径格式存在问题。
- Linux 上执行
ldd --version,确认glibc >= 2.17;CentOS 7.9 基本算最低可用环境,EL6 已经无法支持 MySQL 8.4 - Windows 上重点检查
basedir和datadir路径:不能包含中文、不能带空格,并且必须使用正斜杠或双反斜杠(C:/mysql84或C:\mysql84),单反斜杠通常会导致解析失败 - 可先使用
mysqld --defaults-file=/etc/my.cnf --validate-config提前验证配置文件是否有效,这比反复盲目重启服务更高效
MySQL 8.0 升级 MySQL 8.4 时,真正棘手的通常不是升级命令本身,而是那些没有明确报错、却足以让服务静默卡死的细节问题——例如 ib_logfile 大小不一致、glibc 版本过低、路径中含空格或特殊格式错误。这些问题不会阻止你执行命令,却会让整个 MySQL 实例长时间停留在“starting”或“activating”状态,最终导致升级失败。
