36

【BREW】brew mysql 无法连接问题

 3 years ago
source link: https://segmentfault.com/a/1190000025133089
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

7zuee2n.jpg!mobile

故障现象

今天本地项目怎么都启动不了,查看日志发现是连接本地数据库超时,报错信息如下:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

排查过程

首先查看代码,发现也没有修改到数据库相关的内容,突然出现有点诡异。

转念一想会不会是数据库出了问题,果然,使用数据库管理工具 Datagrip 连接的时候也报了同样的错误,所以基本确定是 mysql 出了问题。

首先查看 brew 安装的本地 mysql 服务的状态,这里有三种方法查看:

  1. 通过 ps   命令
ps -ef | grep mysql

通过 ps 命令加 grep 过滤,可以查看是否有 msyql 进程在进行。

  1. 通过 lsof   命令
lsof -i:3306

也可以通过 lsof 命令,查看指定端口有没有启动,我当时创建的时候用的默认端口 3306 端口,如果你设置了其它端口,可以改成对应的

  1. 通过   brew   的   services   查看(推荐)

brew的   services 是用来管理后台服务命令,它主要有如下功能:

VVFFVfn.png!mobile 好的,直接使用   brew services 命令看看   mysql 的状态

Y32IVvi.png!mobile

可以看到列出的状态通常有三种,分别是:

  1. stopped
  2. 黄色的 started
  3. 绿色的 started

其中   stopped 没啥好说的就是此服务是关闭的。那黄色的与绿色的   started 分别代表什么呢?首先绿色的   started 代表服务是启动的并且正常运行。黄色查了半天,发现代表未知,也就是说可能正常启动着,也可能出现问题,那为什么不直接显示未知呢?看样子是为了兼容,具体可以看这篇文章 What is the meaning yellow service "started" status on Homebrew? - Stack Overflow

很不幸的是,这个黄色对我来说是故障。

解决方法

本来想重启一下就可以了,首先重启   mysql 服务:  brew services restart mysql ,结果重启完还是不行。然后我重启电脑,好吧,还是失败。

接着搜索。

在   google 搜索   brew services yellow mysql 可以发现不只我一个人遇到。很多人给了解决方案,但是还是折腾了很久,才找到对于我有用的,这里直接贴两个。

  1. homebrew - brew services list shows mysql running but cannot connect - Stack Overflow

fIbaieZ.png!mobile

这个方案大致是关服务、卸载服务、删除服务数据、升级   brew 、再重新安装服务。我主要看他评论下面两个   Thanks 觉得应该可以,结果还是不行。可能不适合我这种情况。

  1. 完全重装 mysql

但是重装之路也很艰难,怎么都启动不了,出现了其它问题。应该是没有卸载干净,后来按照这个 brew install mysql on macOS - Stack Overflow 解决了。

YZjyYny.png!mobile

发现之前没有使用   remove & cleanup 命令,可能导致没有卸载干净。按步骤一步一步来就好了。

:pensive: 难受,莫名其妙出现的问题,折腾了几个小时,谨以此文纪念我逝去的几个小时的青春。

引用

  1. What is the meaning yellow service "started" status on Homebrew? - Stack Overflow
  2. homebrew - brew services list shows mysql running but cannot connect - Stack Overflow
  3. brew install mysql on macOS - Stack Overflow

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK