Mysql启动报错,Can't create thread to handle bootstrap (errno: 1) Data Dictionary initialization failed The designated data directory /var/lib/mysql/ is unusable.

# Docker MySQL 8 启动失败问题总结(2026-05-14)

## 🧩 问题现象

在 Docker 中启动 MySQL 8.4 容器时失败,日志如下:


Can't create thread to handle bootstrap (errno: 1)  
Data Dictionary initialization failed  
The designated data directory /var/lib/mysql/ is unusable

容器无法完成初始化,直接退出。


排查过程

1. 排除 volume 问题

不挂载数据目录启动:


docker run -d --name mysql-test  
-e MYSQL_ROOT_PASSWORD=123456  
mysql:8.4

仍然失败,说明不是数据目录问题。


2. 排除 SELinux


getenforce → Disabled

SELinux 无影响。


3. 排除内存与 ulimit

  • memory 4G 足够
  • nproc / nofile 正常
  • kernel threads-max 正常

4. 关键异常


/sys/fs/cgroup/pids.max 不存在

说明当前系统 cgroup pids controller 不完整或未生效。


根本原因

Docker 运行环境中 pids / 线程资源控制异常,导致 MySQL 在初始化阶段无法创建必要线程(bootstrap thread),触发:

  • errno: 1(EPERM)
  • mysqld 初始化失败

属于容器运行时限制问题,而非 MySQL 本身问题。


解决方案

使用 privileged 模式运行


docker run -d  
--name mysql8  
--privileged  
-p 3306:3306  
-e MYSQL_ROOT_PASSWORD=123456  
mysql:8.4


结论

问题根因是 Docker cgroup / pids 子系统限制导致线程创建失败。

使用 --privileged 可绕过限制,使 MySQL 正常启动。

posted @ 2026-05-14 18:08  tre2e  阅读(0)  评论(0)    收藏  举报