Ubuntu 24.04 安装 libaio1t64 后仍报 libaio.so.1 找不到,是因为该包提供的是 libaio.so.1t64.0.2,需手动创建指向它的软链接并运行 ldconfig 刷新缓存。
这不是包没装对,而是 MySQL 硬依赖 libaio.so.1,而 libaio1t64 提供的是 libaio.so.1t64.0.2,系统不会自动创建兼容链接。
dpkg -L libaio1t64 | grep so,通常输出为 /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2
.so.1 链接:ls -l /usr/lib/x86_64-linux-gnu/libaio.so*
sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1
sudo ldconfig
ldconfig -p | grep 'libaio.so.1$'(结尾必须是 .so.1,不能多字符)这些系统不出现 t64 后缀问题,但包名和命令容易混用,装错就无效。
yum install -y libaio(不是 libaio-devel)yum install -y libxcrypt-compat,否则 mysqld --initialize 会静默失败apk add --no-cache libaio
ldconfig -p | grep aio 应明确列出 libaio.so.1
常见于手动解压部署的 MySQL(如 /usr/local/mysql/bin/mysqld),ldd 检查路径不对,或软链指向错误。
which mysqld——它可能返回空或指向 wrapper 脚本;直接查你实际启动的二进制:ldd /usr/local/mysql/bin/mysqld | grep libaio
ls -l /usr/lib/x86_64-linux-gnu/libaio.so.1 应显示有效指向,而非 broken
libaio.so.1.0.1 这类旧版本文件建链——ABI 不兼容,可能引发静默写入失败LD_LIBRARY_PATH 仅限临时调试,systemd 服务默认清空该变量,不可用于生产MySQL 5.7 二进制包面向旧系统编译,新发行版往往连带缺失多个库,单独解决 libaio 不够。
libtinfo.so.5 缺失 → 报错 libtinfo.so.5: cannot open shared object file,需安装 libtinfo5(Ubuntu 20.04+ 默认不带)libnuma.so.1 缺失 → MySQL 8.0+ 即使单 NUMA 节点也会调用,静默卡在启动阶段,装 numactl 即可libncurses.so.5 或 libtinfo.so.5 不存在但只有 .so.6 → 不能重装旧包,应建软链:sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
ldconfig 加载 → ldd 解析成功 → mysqld --initialize-insecure 不报共享库错ldd 验证时发现路径不匹配,或者软链指向了 ABI 不兼容的旧版文件。别跳过这一步。