在使用 Linux 系统搭建 MySQL 数据库的过程中,我们往往会遇到各种依赖库的问题,尤其是在安装较旧版本的 MySQL 时。最近,在 openEuler 22.03 (LTS-SP2) 系统上安装 MySQL 时,我遇到了一个典型的依赖库缺失错误,导致无法启动 MySQL 服务。具体的错误信息如下:
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
这篇博客旨在为遇到同样问题的朋友提供一个详细的解决方案。
背景
在 openEuler 22.03 (LTS-SP2) 系统上安装 MySQL ,启动时遇到了依赖库文件 libncurses.so.5 和 libtinfo.so.5 找不到的两个错误。经过检查,发现系统中并不存在这两个库的指定版本,但存在更高版本的库文件。
解决方案
1.问题1: 缺少libncurses.so.5
首先,我们尝试解决 libncurses 库文件缺失的问题。通过以下命令可以搜索系统中已有的 libncurses 版本:
find / -name 'libncurses*'
输出示例:
/usr/lib64/libncurses++.so.6.3
/usr/lib64/libncurses++w.so.6.3
/usr/lib64/libncurses++w.so.6
/usr/lib64/libncurses.so.6
/usr/lib64/libncursesw.so.6
/usr/lib64/libncurses++.so.6
/usr/lib64/libncursesw.so.6.3
/usr/lib64/libncurses.so.6.3
可以看到,系统已安装的是 libncurses.so.6 版本。解决方法是创建一个指向高版本库文件的符号链接(软链接),模拟出 libncurses.so.5 :
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
2.问题2: 缺少libtinfo.so.5
关于 libtinfo.so.5 文件缺失,我们同样通过搜索,查看系统中是否存在 libtinfo 的其他版本:
find / -name 'libtinfo.so*'
输出示例:
/usr/lib64/libtinfo.so.6.3
/usr/lib64/libtinfo.so.6
同前面的处理方法,创建一个指向 libtinfo.so.6 的符号链接来解决问题:
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
结语
执行完上述步骤后,再次尝试启动 MySQL 服务,此时应该能够正常启动了。这个方法虽然简单,但在处理较旧的软件和库文件版本不兼容问题时非常有效。
评论