根本原因是mysql-common配置失败或libaio库不兼容;前者因/etc/mysql/my.cnf.fallback缺失导致dpkg卡死,后者因Ubuntu 24.04中libaio.so.1未正确链接而静默阻塞。

绝大多数卡在 Setting up 阶段的 MySQL 安装,根本原因不是网络或磁盘慢,而是依赖包配置失败或系统库不兼容——尤其集中在 mysql-common 和 libaio 这两个包上。
mysql-common 配置失败是最常见卡点
Ubuntu 16.04/22.04/24.04 都出现过 dpkg: error processing package mysql-common (--configure) 导致整个安装流程挂住。这不是“正在处理”,而是真的卡死了,apt install 不会自动重试或跳过。
- 典型表现:终端停在
Setting up mysql-common (…)这一行,光标静止,Ctrl+C无效,ps aux | grep dpkg能看到卡住的进程 - 直接原因是
update-alternatives尝试注册/etc/mysql/my.cnf.fallback但该路径不存在(旧版包残留或新版包未生成) - 别删
/var/lib/dpkg/info/mysql-common.*——这会让 dpkg 数据库损坏,后续apt --fix-broken install也救不回来 - 正确做法是手动补全缺失文件:
sudo mkdir -p /etc/mysql<br>sudo touch /etc/mysql/my.cnf.fallback<br>sudo dpkg --configure mysql-common
- 完成后立刻执行
sudo apt --fix-broken install继续完成剩余依赖
Ubuntu 24.04 的 libaio.so.1 缺失会静默阻塞
24.04 把 libaio1 换成了 libaio1t64,而 MySQL 二进制仍硬编码查找 libaio.so.1。它不会报错,但会在 Setting up mysql-server 时反复尝试加载失败,最终超时卡死。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
- 验证方式:
ldd $(which mysqld) | grep libaio如果输出为空或显示not found,就是这个原因 - 临时解决(仅用于安装阶段):
sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1
- 不要用
libaio1包降级——24.04 已移除该包,强制安装会破坏系统基础库 - 装完后可删掉软链接,MySQL 运行时实际用的是
.so.1t64.0.2,软链只在启动初期加载阶段起作用
auth_socket 插件导致 root 初始化失败,也会卡在最后一步
Ubuntu 系统包默认让 root@localhost 使用 auth_socket 插件认证,不走密码。但 mysql_secure_installation 脚本内部会尝试用 mysql -u root -p 连接,结果连不上,脚本就卡在 “Securing the MySQL server deployment” 不动。
- 这不是安装卡住,而是安全初始化卡住;此时
systemctl status mysql显示 active (running),服务其实在跑 - 绕过方法:先用
sudo mysql -u root免密登录,然后执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPass123!';<br>FLUSH PRIVILEGES;
- 再运行
sudo mysql_secure_installation,它就能正常连接并继续了 - 注意:如果已卡在脚本里,
Ctrl+C退出后必须先改认证方式,否则重跑还会卡
真正麻烦的不是某一步出错,而是错误被掩盖在“Setting up”这种模糊状态里。你得先用 ps aux | grep dpkg 或 journalctl -u mysql -n 20 看清卡在哪一层——是 dpkg 停住?还是 mysqld 启动失败?还是安全脚本连不上?没定位清楚就乱删重装,只会让 /var/lib/mysql 和 /var/lib/dpkg 更混乱。

















