mysql启动报libaio.so.1缺失是硬依赖问题,必须安装对应发行版的libaio包并手动创建指向libaio.so.1t64.0.2的软链接,再执行ldconfig刷新缓存,最后用ldd验证mysqld能否解析该库。

MySQL 启动时直接报 error while loading shared libraries: libaio.so.1: cannot open shared object file,不是配置问题,也不是权限问题,就是系统没提供 MySQL 硬依赖的这个库——必须补上,否则 mysqld 进程根本起不来。
不同发行版安装命令不一样,别混用
libaio 包名和安装方式由发行版决定,强行套用其他系统的命令会失败:
- CentOS/RHEL/AlmaLinux/Rocky 8+:运行
sudo dnf install -y libaio(RHEL 7 或旧版用yum) - Ubuntu/Debian 22.04+:运行
sudo apt install -y libaio1t64,注意不是libaio1(该包已废弃) - Alpine(Docker 场景):运行
apk add --no-cache libaio - Kylin V10 SP1/SP2:需从安全加固模板对应源安装
libaio1t64,不能用社区版包
Ubuntu 24.04 装完仍报错?软链接没建对
装了 libaio1t64 后,系统只提供 /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2,但 MySQL 只认 libaio.so.1 这个名字——它不自动创建兼容链接,也不接受 .so 或 .so.2。
- 先确认真实文件存在:
ls /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 - 进入目录:
cd /usr/lib/x86_64-linux-gnu - 手动建软链:
sudo ln -sf libaio.so.1t64.0.2 libaio.so.1 - 刷新缓存:
sudo ldconfig - 验证是否生效:
ldconfig -p | grep 'libaio\.so\.1$'(结尾必须是.so.1,多一个字符都不行)
验证必须走完三步,缺一不可
只看 apt install 成功或 ldconfig -p 有输出,不代表 MySQL 能用。真正起作用的是 mysqld 进程能否动态链接到它:
- 查
mysqld实际路径:which mysqld或确认你用的是哪个二进制(比如/usr/local/mysql/bin/mysqld) - 对那个具体路径执行:
ldd /usr/local/mysql/bin/mysqld | grep libaio - 正确输出应为:
libaio.so.1 => /usr/lib/x86_64-linux-gnu/libaio.so.1 (0x...) - 如果显示
not found,说明软链接路径不对、ldconfig没刷成功,或者mysqld在非标准位置且未被ldconfig扫描到
离线环境要特别注意架构匹配
在金融、政务等离线服务器上,rpm 安装 MySQL 报 libaio >= 0.3.98 is needed,常见陷阱是:
- 误装 i686 架构的
libaio包(如libaio-0.3.109-13.el7.i686.rpm),rpm 不报错但不生效 - 最小化安装的 CentOS 7/8 默认不启用
baseos仓库,yum install libaio会提示 “No package libaio available” - 解决办法:先挂载对应 ISO 或同步 baseos 仓库,再用
yum --enablerepo=baseos install libaio
最容易被忽略的是:即使 ldconfig -p 显示正常,ldd 仍可能找不到——因为 mysqld 二进制路径不在默认库搜索路径里,或者软链接指向了错误的 .so 文件版本。











