Linux基础——虚机mysql库覆盖/usr/lib64/libcrypto.so.1.1.1f无法启动
1、问题描述
租户新增数据库mysql,手动覆盖/usr/lib64中的libcrypto.so.1.1.1f库文件,导致主机重启进入救援模式。
2、问题分析
i.发现报错
poweroff: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
ii.检查/usr/lib64/libcrypto*
注意:查看文件时间有被修改
3、问题处理
i.检查/mnt/sysroot/usr/lib64/libcrypto*是否存在
注意:在救援模式环境,不执行chroot /mnt/sysroot,不切换到用户系统环境;
ls -al /mnt/sysroot/usr/lib64/libcrypto*
ii、安装openssl*包到用户环境/mnt/sysroot/usr/lib64/下
注意:用户环境(chroot /mnt/sysroot)由于缺少libcrypto.so的相关库文件,yum和rpm无法使用,借用镜像的PE环境修复相关缺失包。
# 切换用户环境
chroot /mnt/sysroot
# 挂载iso镜像到用户环境的目录/mnt/os
lsblk
mkdir /mnt/os
mount /dev/sr0 /mnt/os
# 退出用户环境
exit
# 创建rpm解压目录
mkdir /mnt/rpm
cd /mnt/rpm
# 解压openssl-1.1.1f-10.oe1.x86_64.rpm
rpm2cpio ./Packages/yum-4.2.23-4.oe1.noarch.rpm | cpio -div
# 恢复libcrypto.so.1.1.1f到用户环境目录/mnt/sysroot/usr/lib64/
cp /mnt/rpm/libcrypto.so.1.1.1f /mnt/sysroot/usr/lib64/
# 重启
reboot
或
exec /bin/init
4、结论
检查发现/usr/lib64/libcrypto文件被改动过,由于业务方将mysql的libcrypto.so.1.1.1f库覆盖openssl安装/usr/lib64/libcrypto.so.1.1.1f,导致系统无法适配该文件,重启主机失败。
5、涉及知识点
openssl在ISO救援模式下的rpm安装方法;
openssl在ISO救援模式下的rpm2cpio解压方法;
libcrypto在ISO救援模式下的恢复方法;
指令ldconfig -v读取/etc/ld.so.conf用于载入指定库目录及文件;
6、参考
https://www.cnblogs.com/subsea/p/17682962.html