直接安装对应发行版的libaio运行库即可:centos/rhel用yum install -y libaio,ubuntu/debian用apt-get install -y libaio1(24.04需装libaio1t64并建软链),alpine用apk add libaio,rocky/almalinux 9或rhel 9用dnf install -y libaio。

直接装对包就能解决,不是配置或权限问题,也不是 MySQL 本身坏了。
libaio.so.1 缺失时该装哪个包?看发行版选命令
不同 Linux 发行版的包名不一致,装错就白忙:
- CentOS/RHEL 7/8:运行
yum install -y libaio(注意不是libaio-devel,那是编译用的) - Rocky/AlmaLinux 9 或 RHEL 9:先
dnf update,再dnf install -y libaio - Ubuntu/Debian(20.04+):运行
apt-get install -y libaio1 - Ubuntu 24.04(Noble):包名已变,要装
libaio1t64,然后手动建软链 - Alpine(Docker 常见):运行
apk add libaio
Ubuntu 24.04 装了 libaio1t64 还报错?得建软链接
新版 libaio1t64 提供的是 libaio.so.1t64.0.2,MySQL 仍认 libaio.so.1:
- 执行
sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1 - 验证是否生效:
ls -l /usr/lib/x86_64-linux-gnu/libaio.so.1应指向真实文件 - 别漏掉刷新缓存:
sudo ldconfig
装完怎么确认 libaio.so.1 真的可用?
别只信“Complete!”,必须手动验证:
- 运行
ldconfig -p | grep aio,输出里必须含libaio.so.1(不能是.so.2或其他) - 若没看到,补执行
sudo ldconfig - 再试初始化:
mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql,不再报libaio.so.1错才算成功 - 更准的验证方式:
ldd /usr/sbin/mysqld | grep libaio输出应为libaio.so.1 => /usr/lib/x86_64-linux-gnu/libaio.so.1,不能是not found
为什么有时装了 libaio 还报其他 .so.x 缺失?
MySQL 5.7/8.0/8.4 二进制包是为较老系统编译的,新发行版常缺多个兼容库:
-
libnuma.so.1缺失 → 装numactl(RHEL/CentOS 用yum install -y numactl,Ubuntu 用apt-get install -y libnuma1) -
libncurses.so.5或libtinfo.so.5缺失 → 系统只有.so.6,建软链:sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5和对应libtinfo链接 -
libcrypt.so.1缺失(CentOS 8+/RHEL 9 常见)→ 装libxcrypt-compat(CentOS/RHEL)或libcrypt1(Debian 11+/Ubuntu 22.04+) - 最容易被忽略的是
numactl:即使单 NUMA 节点,MySQL 8.0+ 也会尝试调用它,缺了可能静默卡住,不报错也不启动
软链接路径、ldconfig 刷新、多依赖连带缺失——这三个点在最小化安装和新发行版上最容易漏掉,尤其 Ubuntu 24.04 的 libaio1t64 名字不匹配问题,不是装错包,而是名字没对上。











