mysql启动报libcrypto.so.10或1.1缺失,主因是openssl依赖版本不匹配;应先用find和ldd定位实际库文件及mysqld所需版本,再按系统选择对应开发包安装(如rhel系用compat-openssl10或openssl-devel),避免盲目软链接。

报错提示 libcrypto.so.10 或 libcrypto.so.1.1 找不到怎么办
直接原因是 MySQL 二进制或 mysqld 启动时动态链接失败,典型错误是:error while loading shared libraries: libcrypto.so.10: cannot open shared object file 或 libcrypto.so.1.1: cannot open shared object file。这不是 MySQL 本身坏了,而是它编译时依赖的 OpenSSL 库在系统里没装、装错了版本,或者路径没被 ld 找到。
先确认系统里到底有没有 libcrypto 文件
别急着软链接,先查清楚现状:
-
find /usr -name "libcrypto.so*" 2>/dev/null—— 看系统里实际存在哪些变体(比如libcrypto.so.1.1、libcrypto.so.3) -
ls -l /usr/lib/x86_64-linux-gnu/libcrypto.so*(Debian/Ubuntu)或ls -l /usr/lib64/libcrypto.so*(RHEL/CentOS)—— 确认主库文件位置和符号链接是否断裂 -
ldd $(which mysqld) | grep crypto—— 直接看 mysqld 当前找的是哪个名,是否显示not found
根据发行版选对安装方式,别硬套命令
不同系统上,libcrypto 是随 OpenSSL 开发包一起提供的,但包名不统一:
加密货币综合分析工具,集成OKX、Binance数据,提供行情、技术分析、交易信号、资金流向、仓位管理、DCA计划、风险计算。触发词:分析BTC、行情查询、交易信号、仓位计算、DCA计划、巨鲸追踪、风险评估。
- Ubuntu/Debian:
sudo apt install libssl-dev(提供libcrypto.so.1.1等) - CentOS/RHEL 7/8:
sudo yum install openssl-devel - CentOS/RHEL 8+ 或 AlmaLinux 8/9:若需兼容老 MySQL(如 5.7),可能得装兼容包:
sudo yum install compat-openssl10(提供libcrypto.so.10) - 银河麒麟 V10(基于 Ubuntu):
sudo apt install libssl-dev,再补软链接:sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/libcrypto.so - OpenSUSE:
sudo zypper install libopenssl-devel
软链接不是万能解,要匹配真实文件名
手动建软链接只在“有新版库但 MySQL 死磕旧名”时有效,且必须严格对应:
- 如果
ldd显示缺libcrypto.so.10,而你只有/usr/lib64/libcrypto.so.1.1,不能直接 ln -s;得先确认该版本是否 ABI 兼容(通常不建议强行链接) - 更稳妥做法是:找到真正提供
libcrypto.so.10的包(如compat-openssl10),用包管理器装,而不是复制文件或乱指路径 - 若必须软链接,目标路径要绝对准确:
sudo ln -sf /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10,注意-f覆盖已有链接,且确保源文件存在 - 设
LD_LIBRARY_PATH是临时方案,仅用于验证,上线环境应避免;永久生效要改/etc/ld.so.conf.d/并运行sudo ldconfig
最容易被忽略的一点:MySQL 二进制包和系统 OpenSSL 版本是强绑定的。自己编译的 MySQL 可以指定 -DOPENSSL_ROOT_DIR,但官方 RPM/DEB 包不行——所以看到 libcrypto.so.10 就去找兼容包,看到 libcrypto.so.3 就换 MySQL 8.0.30+ 或更高版本,别在软链接上反复折腾。










