麒麟V10上安装MySQL报“libaio.so.1: cannot open shared object file”错误,根本原因是系统最小化安装未预装libaio库,且其路径(/usr/lib)未被ldconfig索引;需手动执行echo "/usr/lib" | sudo tee /etc/ld.so.conf.d/libaio.conf && sudo ldconfig注册库路径。

直接装 libaio 通常能解决大部分情况,但不是所有发行版都管用——尤其在 Ubuntu 24.04、Kylin V10 或最小化安装的系统上,装完仍报 libaio.so.1: cannot open shared object file 是常态。
为什么 yum install libaio 在 CentOS/RHEL 上基本够用
CentOS 7/8、RHEL 8/9 的 libaio 包默认提供 /usr/lib64/libaio.so.1,路径和符号名完全匹配 MySQL 链接器预期。装完后:
-
ldconfig -p | grep aio能立刻看到libaio.so.1条目 -
mysqld --initialize-insecure不再因链接失败退出 - systemd 启动时不会卡在 “loading shared libraries” 阶段
Ubuntu/Debian 系统不能只靠 apt install libaio1
Ubuntu 24.04(Noble)起,官方把异步 I/O 库重命名为 libaio1t64,它安装的是 libaio.so.1t64.0.2,而 MySQL 二进制文件硬编码查找 libaio.so.1。
所以即使 apt install libaio1t64 显示成功,ldd /usr/sbin/mysqld | grep aio 依然显示 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
注意:不要用 libaio-dev,那是头文件包,不提供运行时库;也不要改 LD_LIBRARY_PATH,容易污染全局环境且 systemd 服务里不生效。
Kylin V10 上装完 libaio 还是找不到?检查架构和路径
Kylin V10 SP1/SP2 基于 Debian 11,但部分镜像用的是 amd64 架构却把库装到了 /usr/lib(非标准 /usr/lib/x86_64-linux-gnu),导致动态链接器找不到。
验证步骤:
- 运行
uname -m确认是x86_64 - 查库位置:
find /usr -name 'libaio.so*' 2>/dev/null - 如果只在
/usr/lib/libaio.so.1找到,但ldconfig -p没列出来,说明没注册进缓存 - 手动加路径:
echo "/usr/lib" | sudo tee /etc/ld.so.conf.d/libaio.conf && sudo ldconfig
手动解压 MySQL tar.gz 包时最容易漏掉的点
官方二进制包(如 mysql-8.0.x-linux-glibc2.17-x86_64.tar.xz)不带依赖管理,哪怕系统已装 libaio,也可能因为以下原因失败:
-
mysqld二进制被放在/opt/mysql/bin/,而ldd检查时发现它链接的是libaio.so.1,但该库不在/opt/mysql/lib下,也不在系统默认路径中 - 容器或 chroot 环境里未运行
ldconfig,缓存未更新 - SELinux 或 AppArmor 限制了库加载(少见,但
audit.log里会有avc denied)
最稳做法:装完 libaio 后,不管什么发行版,都跑一遍 sudo ldconfig,再用 ldd $(which mysqld) | grep aio 看输出是否干净。


















