mac上通过homebrew安装的mysql崩掉的心酸历程ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket

太心酸了,昨天电脑运行还好好的程序,今天一过来就说mysql服务启动不了了。让我想到了上次pyenv崩掉的过程噜😭
本机环境:macOs系统,用的homebrew安装的5.7和8.0版本的mysql。

报错现象和初步分析

在这里插入图片描述
这个错误表示客户端尝试通过 Unix 套接字文件 /tmp/mysql.sock 连接到本地 MySQL 服务器时失败了。错误码 (2) 通常表示找不到文件或目录。
于是我输入如下命令检查mysql服务是否正在运行

brew services list

在这里插入图片描述
发现服务没有启动,所以输入如下命令启动

brew services start mysql@5.7

结果报错如下:
在这里插入图片描述
这个报错实际上也没有更多的信息,大致意思就是说在尝试启动 MySQL 服务时遇到了问题。建议我们以 root 用户身份重新运行命令。
但是在 macOS 上,我们通常不需要以 root 用户身份运行 brew services 命令的。
所以尝试解决方案如下:

尝试1:重装大法

我上来就是一个😡

brew uninstall mysql@5.7
brew cleanup
brew install mysql@5.7

homebrew反手就给我一个😡
在这里插入图片描述
what can i say, what can i say man?🥹
这个错误表明 Homebrew 在尝试清理旧的安装包时遇到了权限问题。具体来说,Homebrew 无法删除 /usr/local/Cellar/node/21.7.0 目录,因为该目录不为空。
那么我们肯定要先看下这个目录是存放什么的。看名字就是和node.js有关的东西,与我们mysql没有关系。其实可以继续执行install命令了。
然后继续

brew services start mysql@5.7

和前面抱一样的错。重装大法,寄。

尝试2:查看日志并分析

日志文件通常位于/usr/local/var/mysql/下,文件名一般是计算机名.err,于是我使用如下命令

tail -n 100 /usr/local/var/mysql/EVYSHAN-MC0.err

输出内容如下:
在这里插入图片描述
关键信息为:

2024-04-07T03:18:34.527985Z 0 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4000!

丢给gpt,他说这个错误表明 InnoDB 数据字典中的表标志与 ibdata1 文件中的标志不一致。ibdata1 是 InnoDB 存储引擎的系统表空间文件,它包含了数据字典、撤销日志、双写缓冲区等重要数据。这种不一致通常是由于文件损坏或者不正确的 MySQL 升级操作导致的。
因为本机没有重要的数据,所以我选择重新初始化数据库

mysqld --initialize

遭遇报错如下:
在这里插入图片描述
可以看到它会去找8.0的mysql,于是我用指定路径再次初始化了一次。

  1. 首先停止mysql服务(如果它正在运行)
    brew services stop mysql@5.7
    brew services stop mysql
    
  2. 备份数据目录(可选,但推荐)
mv /usr/local/var/mysql/ /usr/local/var/mysql_backup/
  1. 删除先有数据目录
rm -rf /usr/local/var/mysql/*
  1. 初始化数据库
mysqld --initialize

然后注意,初始化成功后会显示一个临时密码
在这里插入图片描述
之后我们就根据这个密码来登陆mysql

brew services start mysql@5.7
mysql -u root -p

在这里插入图片描述
win!!!

最后注意更换密码嗷

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸡鸭扣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值