mysql在aarch64上启动失败(如“cannot execute binary file”或“libtinfo.so.6 not found”)根本原因是未选用架构、glibc版本、包类型三重匹配的官方aarch64二进制包;须通过uname -m确认aarch64、ldd --version验证glibc≥2.28,下载mysql-8.x.x-linux-glibc2.28-aarch64.tar.xz类包,解压后修复权限、安装ncurses-compat-libs及openssl3依赖,并确保datadir等路径属主为mysql用户。

mysqld 启动失败、报 cannot execute binary file 或 libtinfo.so.6: cannot open shared object file,基本就是没选对 aarch64 包——不是“带 ARM 字样”就行,必须同时满足架构、glibc、包类型三重匹配。
先确认系统真是 aarch64 且 glibc ≥ 2.28
别靠 cat /etc/os-release 猜,直接跑两行命令看真实环境:
-
uname -m输出必须是aarch64;若为x86_64却硬装 aarch64 包,mysqld直接报cannot execute binary file -
ldd --version输出的 glibc 版本必须 ≥ 2.28(MySQL 8.0.33+ 强制要求);低于此值,即使解压成功,mysqld启动时大概率卡在缺失libtinfo.so.6或libncurses.so.6
麒麟 V10、统信 UOS、OpenEuler ARM 版等常见国产系统多数已满足,但老旧 CentOS Stream 8 或自定义裁剪系统可能仍用 glibc 2.27,需升级或换包。
只下官网「Linux - Generic」里的 aarch64 tar.xz 包
去 https://www.php.cn/link/06d86297d6e28d4637d60c86c2a2f5b6 → 选「Linux - Generic」→ 找文件名含 aarch64 且带 glibc2.28 的 .tar.xz 包,例如:
mysql-8.0.44-linux-glibc2.28-aarch64.tar.xzmysql-8.2.0-linux-glibc2.28-aarch64.tar.xz
明确避开这些:
-
mysql-test-开头的包:只有测试脚本,没有mysqld -
.rpm或.deb包:虽标 aarch64,但依赖特定发行版的 systemd、selinux 策略或 repo 配置,通用性差,麒麟/统信上易出Failed to start mysqld.service: Unit not found - 镜像站里只写「ARM 支持」但无
aarch64和glibc2.28字样的包:很多是 x86_64 编译后加了-march=armv8-a标志,实际仍含非法指令
解压后必须修复权限和路径
aarch64 二进制包从 Windows 传入或经某些压缩工具处理后,mysqld 常丢失执行权限,且默认拒绝以 root 运行。解压后立刻执行:
-
chown -R mysql:mysql /usr/local/mysql(目录归属必须是mysql用户) -
chmod +x /usr/local/mysql/bin/mysqld(关键!否则mysqld --initialize报Permission denied) -
mkdir -p /var/lib/mysql && chown mysql:mysql /var/lib/mysql(数据目录不能是/root或用户家目录,否则 SELinux/AppArmor 拦截)
配置文件中 datadir 和 socket 路径也建议避开 /var/run 或 /run,改用 /tmp/mysql.sock 或 /usr/local/mysql/run,减少权限冲突。
启动前检查 openssl 和 ncurses 兼容性
MySQL 8.0.28+ 默认依赖 OpenSSL 3.0,但部分 ARM 发行版(如旧版麒麟)仍预装 OpenSSL 1.1.1。若 mysqld 启动时报 symbol lookup error: mysqld: undefined symbol: EVP_MD_get0_name,说明动态链接失败:
- 优先尝试安装系统对应源的
openssl3包(如麒麟用yum install openssl3) - 若不可行,降级选用 MySQL 8.0.31 或更早版本(其仍兼容 OpenSSL 1.1.1),包名通常含
el7或el8,例如mysql-8.0.31-linux-glibc2.17-aarch64.tar.xz -
ncurses-compat-libs或libncurses5也需提前装好,否则初始化阶段就挂:Ubuntu/Debian 装libncurses5,CentOS/RHEL/麒麟装ncurses-compat-libs
最容易被忽略的是:aarch64 包里 mysqld 对 libtinfo.so.6 的依赖是硬编码的,它不接受软链替代,必须确保该文件真实存在且可读——查不到就装 ncurses-compat-libs,别试图 ln -s 绕过。











