为什么MySQL在麒麟国产操作系统上安装时会出现段错误?

星晨酱_7745

星晨酱_7745

2026-06-15

559人浏览

原创

段错误本质是内存访问越界,主因是mysql二进制包硬编码依赖libncurses.so.5、libssl.so.10等旧版库,而麒麟v10 arm仅提供libncurses.so.6.1和libssl.so.1.1,版本不匹配导致符号解析失败或abi不兼容,进而跳转非法地址崩溃;残留mariadb库或误装x86_64包会加剧该问题。

为什么mysql在麒麟国产操作系统上安装时会出现段错误?

段错误(Segmentation Fault)本质是内存访问越界

这不是MySQL代码本身有bug,而是它尝试调用某个函数时,动态链接器找不到对应的符号,或者加载的库版本不兼容,导致跳转到非法地址。ARM版麒麟V10上最常见的是libncurses.so.5、libssl.so.10这类老名字的库根本不存在,但MySQL二进制包编译时硬编码了这些名字——程序一启动就崩在ldd解析阶段之后、main执行之前。

为什么麒麟V10装MySQL容易触发段错误

  • MySQL 5.7/8.x 官方二进制包默认链接libncurses.so.5和libtinfo.so.5,但麒麟V10只带libncurses.so.6.1和libtinfo.so.6
  • MySQL 8.0.27+ 链接libssl.so.10,而麒麟V10提供的是libssl.so.1.1,名字不匹配导致symbol lookup error,表现就是段错误
  • 残留的mariadb-libs包会覆盖或干扰MySQL自己的库文件,mysqld实际加载的是MariaDB的so,ABI不兼容直接崩溃
  • 用x86_64包往aarch64麒麟系统上硬装,uname -m输出aarch64却装了x86_64 RPM,报cannot execute binary file——这其实也是段错误的一种底层表现

怎么验证是不是段错误由库缺失引起

别急着重装,先跑两行命令:

ldd /usr/sbin/mysqld | grep "not found" —— 看有没有标红的缺失库

mysqld --version 2>&1 | head -n 5 —— 如果直接segfault,说明连版本都打不出来,基本锁定是libncurses或libssl问题

协同养育操作系统
协同养育操作系统

协同养育操作系统(Co-Parenting OS)— 离异家庭专业协同养育支持系统。12模块覆盖接送管理、成长记忆库、孩子观察站、亲子关系粘合剂、共同挑战中心、情绪冲突观察、父母成长、成长档案馆、成长阶段引擎、风险预警、驾驶舱、被恶意攻击急救包。当用户涉及离异家庭育儿、协同养育、抚养探视、接送安排、孩子成长记录、亲子关系、离异冲突、被恶意攻击、前任矛盾等话题时触发。

下载

常见报错片段:error while loading shared libraries: libncurses.so.5: cannot open shared object file 或 symbol lookup error: undefined symbol: OPENSSL_init_ssl

软链不是万能解法,得看目标库是否真兼容

创建/usr/lib64/libncurses.so.5 → /usr/lib64/libncurses.so.6.1能过加载关,但不代表函数ABI完全一致。MySQL 5.7对ncurses 5.9有强依赖,麒麟V10自带的ncurses 6.1虽然后向兼容大部分接口,但个别内部结构偏移变了,mysqld --initialize仍可能段错误。

更稳妥的做法:

  • 确认find /usr/lib64 -name "libncurses.so.5*"真没结果再建软链
  • 优先尝试安装ncurses-compat-libs(麒麟源里可能叫ncurses5-compat),比软链安全
  • 处理libssl.so.10时,不要软链到libssl.so.1.1——应使用compat-openssl10包,或从CentOS 7的openssl-libs RPM里提取libssl.so.10手动放过去

段错误背后往往是多个库叠加失效,单修一个可能没用。清完MariaDB、核对架构、修复ncurses、再补openssl,四步缺一不可。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
视频服务器配置参数有哪些
视频服务器配置参数有哪些

视频服务器配置参数有处理器、内存、存储、视频编解码器、网络接口、视频输入输出接口、操作系统、安全性、环境适应性和成本。在搭建视频服务器时,需要根据实际需求和预算,合理选择这些参数,以实现高性能、高稳定性和低成本的目标。

2023.10.17

3860

11

linux的操作系统介绍
linux的操作系统介绍

Linux是一个灵活、稳定、安全的操作系统,适用于各种不同的应用场景,从个人电脑到服务器和嵌入式系统。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.20

3106

12

Linux操作系统的主要用途
Linux操作系统的主要用途

Linux操作系统用途广泛,包括:服务器运营,软件开发,科学研究和教育,嵌入式系统,以及个人电脑和笔记本电脑。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.21

5159

8

linux操作系统的作用
linux操作系统的作用

linux操作系统在以下领域发挥着关键作用:服务器和云计算;嵌入式系统;个人电脑和笔记本电脑;超级计算;其他领域等等。想了解更多linux操作系统的相关内容,可以阅读本专题下面的文章。

2024.04.12

2435

5

有哪些常见的网络操作系统
有哪些常见的网络操作系统

常见的网络操作系统有windows server、linux、unix、macos server、freebsd、cisco ios、juniper junos和hp-ux等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.12

3004

6

32位操作系统怎么改成62位的
32位操作系统怎么改成62位的

要将 32 位操作系统升级到 64 位,需要遵循以下步骤:1. 检查硬件和软件兼容性;2. 备份数据;3. 获取 64 位操作系统;4. 创建可启动安装媒体;5. 从安装媒体启动计算机;6. 选择“升级”选项;7. 完成安装。

2025.04.02

3223

9

mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

1993

6

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.21

1219

5

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

715

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 176人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 279人学习