安装过程中下面的语句
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
出现报错
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /soft/mysql/bin/mysqld)
/soft/mysql/bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by /soft/mysql/bin/../lib/private/libcrypto.so.3)
/soft/mysql/bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /soft/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /soft/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /soft/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /soft/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
/soft/mysql/bin/mysqld: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /soft/mysql/bin/../lib/private/libprotobuf-lite.so.3.19.4)
总结来说归类为两个问题
问题1:libstdc++.so.6系列报错是由于当前动态库版本较低不满足软件的先决条件,从错误来看至少需要22以上的版本,用高版本(libstdc++.so.6.0.25升职更高)替换后从新创建软件连接即可。
问题2:libm.so.6和libc.so.6错误由于glibc版本较低导致,并且至少需要glibc 2.28的版本
问题一的解决 libstdc++.so.6.0.26
1.从网上下载所需要的libstdc++.so.6.0.24版本
2.把libstdc++.so.6.0.26拷贝到/usr/lib64目录下
cp libstdc++.so.6.0.26 /usr/lib64/
3.删除原来的libstdc++.so.6符号连接。
rm -rf libstdc++.so.6
4.新建新符号连接
ln -s libstdc++.so.6.0.26 libstdc++.so.6
这时候再执行
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 你就会发现报错少了一点,也证明了libstdc++.so.6.0.24
问题二的解决 编译安装glibc-2.28
这里其实也很复杂 总体思路参考centos7升级glibc2.28_centos7 glibc2.28-CSDN博客
1.下载glibc2.28
mkdir -p /opt/third-party && cd /opt/third-party
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xf glibc-2.28.tar.gz
cd glibc-2.28
2.查看glibc的INSTALL文件所描述的依赖 并 下载
vim INSTALL
可以发现我们需要前置条件是 >=4.0的make 和 >=4.9的gcc
照着链接做 基本没有问题
gcc升级链接
CentOS升级gcc到高版本(全部版本详细过程)_centos gcc update-CSDN博客
这里我选择的是 7.3版本的gcc
make的升级
3. 完成了前置条件之后 修改test-installation.pl文件
添加 && $name ne "nss-test2"
【小知识点】行号 可以通过 :set number的方式 让其显示
vim scripts/test-installation.pl
4. 正式编译
这个过程我参考了两个链接
centos7升级glibc2.28_centos7 glibc2.28-CSDN博客
centos7 glibc2.17升级到glibc2.28_centos_esdhhh-华为云开发者联盟
具体操作
cd /...对应的的路径.../glibc-2.28/
mkdir glibc_build
cd glibc_build
../configure --prefix=/usr --with-headers=/usr/include --with-binutils=/usr/bin
中间可能会有依赖的确实 下载对应的依赖即可
我操作的过程中缺失了bison 直接通过 yum install bison就可以解决了
然后是make编译
make -j10
make install
最后成功了 glibc2.28编译成功
mysql安装的最终结果 显示密码就OK了
参考链接
bug总体解决思路 https://www.cnblogs.com/Roobbin/p/17772445.html
libstdc++.so.6.0.26的安装 完美解决动态库问题libstdc++.so.6: version `CXXABI_1.3.11‘ not found_./mysqld: /lib64/libstdc++.so.6: version `cxxabi_1-CSDN博客
glibc2.28升级 centos7升级glibc2.28_centos7 glibc2.28-CSDN博客
centos7 glibc2.17升级到glibc2.28_centos_esdhhh-华为云开发者联盟