1.背景
因Netcup今年5月份后开始涨价,原价5.75欧/月的VPS1000翻倍款涨到6.81欧,博主最近把手头上的VPS从netcup迁移到阿里巴巴香港轻量服务器。在导入mysql数据的时候,系统会报错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory。
mysql -u root -p <database-name> < <database-name>.sql博主建站环境为:
操作系统:Debian 13
web服务器:Nginx 1.26.0
数据库 Mariadb 10.11.7-MariaDB-log - MariaDB Server
PHP: 8.3.72.原因排查
通过检索和AI查询,了解到这个报错非常典型,通常发生在使用较新的 Linux 系统(如Debian、Ubuntu 20.04+ 等)去运行一个较旧版本的 MySQL 时。简单来说, MySQL 程序启动时需要一个叫 libncurses.so.5 的老版本依赖库,但新系统里默认只安装了更新的 libncurses.so.6,导致 MySQL 找不到“老伙计”而无法启动。
3.处理方案
3.1 手动创建软链接
通过“欺骗”的方式,给系统里现有的新版本库创建一个旧名字的快捷方式(软链接),让 MySQL 以为找到了它需要的文件。
3.1.1 建立软连接
ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5注:如果提示找不到源文件,可以先用 find /usr -name "libtinfo.so.6" 确认一下你系统中 libtinfo.so.6 的实际路径
3.2 刷新动态链接库缓存
创建完软链接后,建议执行一下ldconfig 刷新动态链接库缓存,然后再尝试启动或登录 MySQL,这个问题应该就彻底解决了。
3.2 通过系统包管理器安装
如果你是 Ubuntu 20.04+ 或 Debian 系统,可以直接安装 libtinfo5 包,我的debian13直接安装这个依赖包时失败的。
sudo apt update
sudo apt install libtinfo5 -y如果你是 CentOS 8/9、RHEL、Rocky Linux 等系统:
安装 ncurses 的兼容库通常会自动包含 libtinfo。执行:
sudo dnf install ncurses-compat-libs -y
评论 (0)