首先说一下不太清楚出现这个问题的原因,莫名其妙开机就变成这样了。
在navicat中连接数据库出现
Can’t connect to MySQL server on ‘127.0.0.1’(61 “Connection refused”)
然后就试了试在shell中连接数据库报错以下
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/opt/[email protected]/bin/mysql
Reason: image not found
解释原因之前首先解释一下什么是openssl
Mac OSX一般自带的有OpenSSL。但是因为一些原因将原有的 OpenSSL 替换为 LibreSSL 。在以上这些系统中应该除了实测必须要用 OpenSSL 软件外,应该都可以用 LibreSSL 取代 OpenSSL。而对于其他大多数还没有将系统自带的 OpenSSL 替换为 LibreSSL 的会麻烦一些,并且也可能做不到彻底替换。只是对于编译安装的软件,可以尽量用 LibreSSL 取代 OpenSSL。
证实一下我的mac上直接在shell中输入
openssl version
可以看到其实openssl 就是LibreSSL。
而出现本次错误的原因其实是:
由依赖性冲突引起的。
由于我安装软件的时候都使用homebrew,没有注意好像是无意中安装了[email protected](不明白为什么安装了)
由于安装OpenSSL 1.1或者是更高版本。当自制软件安装OpenSSL时,它将更改
/ usr / local / opt / openssl /中的符号链接以指向最新版本。这意味着文件
/usr/local/opt/openssl/lib/libssl.1.0.0.dylib不再在该目录中,因为它已被
libssl.1.1.dylib 替换,但是当我启动mysql的时候好像需要加载本机的libssl.1.0.0.dylib,于是乎这个问题就出现了。
解决方案:
我试了好多种解决方案,
第一种:比如说直接将使用的1.0.0指向1.1,让系统使用1.0.0的时候直接调用1.1.但是这个方案不太行,开启mysql的时候还是报错,不过可能管用,大家可以试试。
第二种:直接删除当前安装的openssl,然后指定版本安装[email protected],不过不能直接使用 brew install [email protected] 会提示没有当前版本。直接
1.删除本机上使用brew命令安装的所有版本openssl
brew uninstall --ignore-dependencies openssl
2.安装指定版本openssl(如果没翻墙特别容易失败,失败了不要放弃,再次执行命令安装就可以了)
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
这个时候执行
mysql -uroot -proot
成功进入mysql并且没有报告异常
有什么疑问可以留言,看到后会及时回复