/usr/lib64/libssl.so.10: no versioninformation availabl

本文介绍了解决MongoDB启动时提示版本信息缺失的问题。原因是OpenSSL库版本过旧,通过更新OpenSSL到1.0.1e-30.el6.8版本成功解决了该问题。


[root@localhost ~]# mongo

mongo: /usr/lib64/libssl.so.10: no versioninformation available (required by mongo)

mongo: /usr/lib64/libcrypto.so.10: noversion information available (required by mongo)

mongo: /usr/lib64/libcrypto.so.10: noversion information available (required by mongo)

MongoDB shell version: 3.0.2

connecting to: test




原因:

openssl library 不是最新版


解决;

[root@localhost ~]# yum install openssl-1.0.1e-30.el6.8


---> Package openssl.x86_64 0:1.0.0-27.el6 will be updated
---> Package openssl.x86_64 0:1.0.1e-30.el6.8 will be an update


Running Transaction
  Updating   : openssl-1.0.1e-30.el6.8.x86_64                                                     1/2 
  Cleanup    : openssl-1.0.0-27.el6.x86_64                                                        2/2 
  Verifying  : openssl-1.0.1e-30.el6.8.x86_64                                                     1/2 
  Verifying  : openssl-1.0.0-27.el6.x86_64                                                        2/2 

Updated:
  openssl.x86_64 0:1.0.1e-30.el6.8 


在MySQL启动过程中,出现的错误信息可以分为两个主要问题:一是与`libcrypto.so.10`和`libssl.so.10`相关的版本信息缺失问题,二是无法通过本地socket连接到MySQL服务器,错误提示为`Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'`。以下是对这两个问题的详细分析及解决方法。 ### `libcrypto.so.10`和`libssl.so.10`版本信息缺失 该错误通常表明MySQL在启动时加载了不兼容的OpenSSL库版本。`libcrypto.so.10`和`libssl.so.10`是旧版本的OpenSSL库文件,而系统可能已经安装了更新版本的OpenSSL(如1.1.1或更高版本)。MySQL的某些版本依赖于特定版本的OpenSSL库,若系统中缺少这些特定版本的库文件,就会提示版本信息不可用。 #### 解决方法: 1. **确认系统中是否安装了所需的OpenSSL版本**: - 可以使用命令`ldconfig -p | grep libssl.so.10`和`ldconfig -p | grep libcrypto.so.10`来检查系统中是否已经存在这些库文件。 - 如果未找到相关文件,则需要从官方源或第三方源安装对应的OpenSSL版本。 2. **安装兼容版本的OpenSSL库**: - 对于基于Red Hat的系统(如CentOS),可以尝试使用`yum`安装兼容版本: ```bash sudo yum install openssl11-libs ``` - 或者,如果系统支持EPEL仓库,也可以通过EPEL来安装: ```bash sudo yum install epel-release sudo yum install openssl11 ``` 3. **创建符号链接**: - 如果系统中已存在较新版本的OpenSSL库但MySQL仍然报错,可以考虑创建指向新版本库文件的符号链接。例如: ```bash sudo ln -s /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so.10 sudo ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10 ``` - 完成后运行`ldconfig`更新动态链接库缓存。 ### 无法通过本地socket连接到MySQL服务器 此错误通常意味着MySQL服务器没有正确启动,或者socket文件路径配置不正确。错误信息中的路径`/var/lib/mysql/mysql.sock`是MySQL默认使用的socket文件路径,但实际路径可能因配置不同而有所变化。 #### 解决方法: 1. **检查MySQL服务状态**: - 使用命令`systemctl status mysqld`或`service mysqld status`查看MySQL服务是否正在运行。 - 如果服务未运行,尝试启动服务:`sudo systemctl start mysqld`或`sudo service mysqld start`。 2. **检查socket文件是否存在**: - 运行`ls /var/lib/mysql/mysql.sock`查看socket文件是否存在。 - 如果文件不存在,可能是MySQL服务未能成功启动,需查看MySQL的日志文件(通常位于`/var/log/mysqld.log`)以获取更多错误信息。 3. **手动删除锁文件**: - 有时,MySQL服务可能因为异常关闭而遗留锁文件,导致服务无法正常重启。可以尝试删除锁文件后重新启动服务: ```bash sudo rm -rf /var/lib/mysql/mysql.sock.lock sudo systemctl restart mysqld ``` 4. **检查MySQL配置文件**: - 查看MySQL的配置文件(通常是`/etc/my.cnf`或`/etc/mysql/my.cnf`),确认`socket`参数是否指向正确的路径。例如: ```ini [mysqld] socket=/var/lib/mysql/mysql.sock ``` - 确保客户端配置中的`socket`参数与服务器端一致。 5. **权限问题**: - 确认MySQL的数据目录和socket文件的权限设置是否正确。通常,这些文件应由MySQL用户(如`mysql:mysql`)拥有。 ### 示例代码 以下是一个简单的脚本,用于检查并创建`libcrypto.so.10`和`libssl.so.10`的符号链接: ```bash #!/bin/bash # 检查是否存在旧版本的库文件 if [ ! -f /usr/lib64/libssl.so.10 ]; then ln -s /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so.10 fi if [ ! -f /usr/lib64/libcrypto.so.10 ]; then ln -s /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.10 fi # 更新动态链接库缓存 ldconfig ``` 执行该脚本前,请确保了解系统中当前安装的库版本,并根据实际情况调整路径。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值