文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

动态库libstdc++.so.6及libc.so.6版本过低导致MySQL无法安装

2023-09-10 16:22

关注

点击上方蓝字关注我

477d85fbca06a14db7ca9621d5b9f227.png

最近安装新版本MySQL(Percona Server)时发现所依赖的libstdc++.so.6、libc.so.6均较高(尤其在Centos 6版本上安装时),导致无法完成数据库安装。

因Percona官方文档也有说明5.7.31版本后不再是OpenSSL库方式的二进制包了。

3bf7c0d8007352821b03d53dade607a3.png

ec739178940deb1e551553210bdf97b3.png

升级动态库并安装新版本MySQL的案例如下文所示。

1、初始化报错

安装Percona Server 5.7.38-41,进行初始化,将出现如下报错信息:

3eeae29199f793077fff81a93d0628ea.png

[root@c6 mysql5.7]# bin/mysqld --defaults-file=/data/mysql/mysql3306/etc/my.cnf  --initialize --user=mysql bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

此报错直接安装numactl即可解决。

yum install -y numactl

再次初始化时,报错信息如下:

84421ac3660d64ce306497023997dcc5.png

bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by bin/mysqld)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by bin/mysqld)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by bin/mysqld)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/Percona-Server-5.7.38-41-Linux.x86_64.glibc2.17/bin/../lib/private/libssl.so)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/Percona-Server-5.7.38-41-Linux.x86_64.glibc2.17/bin/../lib/private/libssl.so)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/Percona-Server-5.7.38-41-Linux.x86_64.glibc2.17/bin/../lib/private/libcrypto.so)bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/Percona-Server-5.7.38-41-Linux.x86_64.glibc2.17/bin/../lib/private/libcrypto.so)

提示找不到对应的依赖包GLIBCXX_3.4.15以及 GLIBC_2.14 - GLIBC_2.18

查看系统对应的版本为(Centos6.9)GLIBCXX_3.4.13以及 GLIBC_2.12,(Centos7.6 GLIBCXX_3.4.15以及 GLIBC_2.17) 因此需安装对应依赖包,其对应的动态库分别为: 

GLIBCXX_3.4.15 -->libstdc++.so.6GLIBC_2.18 -->libc.so.6

2.  升级libstdc++.so.6

下载libstdc++6包

wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.9/libstdc++6_4.9.2-10+deb8u1_amd64.deb

进行安装

ar -x libstdc++6_4.9.2-10+deb8u1_amd64.debxz -d data.tar.xztar -xvf data.tarcp libstdc++.so.6.0.20sln libstdc++.so.6.0.20  /usr/lib64/libstdc++.so.6chmod +x libstdc++.so.6.0.20sln libstdc++.so.6.0.20 libstdc++.so.6

98c5b8ce81892b0224fd3fa25f2aff09.png

3add7edf7387d23cf13b4fc5296fbf19.png

此时再查看对应版本已升级完毕:

strings /usr/lib64/libstdc++.so.6|grep GLIBCGLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBCXX_3.4.14GLIBCXX_3.4.15GLIBCXX_3.4.16GLIBCXX_3.4.17GLIBCXX_3.4.18GLIBCXX_3.4.19GLIBCXX_3.4.20GLIBC_2.3GLIBC_2.2.5GLIBC_2.14GLIBC_2.18GLIBC_2.17GLIBC_2.3.2GLIBCXX_DEBUG_MESSAGE_LENGTH

1142220c7dcb3cbdae404114c831bfd0.png

3.  升级libc.so.6

本次仅升级到GLIBC_2.18,满足当前要求即可。

下载源码包(rpm也可,本次通过源码包编译安装)

wget  http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz

编译安装:

tar -zxvf glibc-2.18.tar.gzcd glibc/mkdir  buildcd build ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/binmake && make install  # make的时间较长

编译安装完成后执行如下命令

strings /lib64/libc.so.6 |grep GLIBC

如安装过程出现如下错误,则需提前安装gcc-c++包,yum直接安装即可

1e570c5d7de71e1fe30a90020101decf.png

如果configure过程中出现如下错误

* LD_LIBRARY_PATH shouldn’t contain the current directory when* building glibc. Please change theenvironment variable* and run configure again.

则直接在当前会话窗口将 LD_LIBRARY_PATH 置为空后再次运行即可

LD_LIBRARY_PATH=''

3. 脱坑提示

不要直接编译到其他路径后通过软连接的形式升级libc.so.6,否则可能导致所有很多命令无法运行,例如执行ll 命令(其他命令也一样)时出现如下错误

ls: relocation error: /usr/local/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time referenceid: relocation error: /usr/local/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
‍ ‍

也会出现缺少其他动态库的情况。

恢复方案:

千万不要关闭当前会话!!!通过export LD_PRELOAD= 修复修改已调整的库执行 ldconfig (通常能恢复),如不行,则继续下一步

其他的坑可能也有,大家遇到了可以相互交流。

c71e86f08e0dd9b32138d22938d18983.png

往期精彩回顾

  MySQL高可用之MHA集群部署

2.  mysql8.0新增用户及加密规则修改的那些事

3.  比hive快10倍的大数据查询利器-- presto

4.  监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

  PostgreSQL主从复制--物理复制

  MySQL传统点位复制在线转为GTID模式复制

7.  MySQL敏感数据加密及解密

8.  MySQL数据备份及还原(一)

9.  MySQL数据备份及还原(二)

164edd92d026d1bd275ad77388e3363b.png

扫码关注     

9b6a9408150ae93241b490cccfa2e33d.jpeg

3d2757cfb4c4ed9f248eae3eddf499ba.png

54f6cad664b6ae6d4668dcb31af04530.png

来源地址:https://blog.csdn.net/gjc592/article/details/125713637

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯