哦,这是真的 np。

前言

这两天没登服务器,上一周在解决 “tmp/mysql.sock” 问题的时候在没考虑任何后果的情况下执行了:

1
mysqld

接着服务器就开始拒绝我的连接。用救援窗口一连接,发现 sshd 服务被弄坏了。
于是拿出镜像回退。

之后我就以为已经回退到了 5 月 20 号的版本,肯定不会在 MySQL 上出问题了,毕竟 5 月 28 号我还部署了项目,还能开数据库。

现在

但的确这次必须爆破自己服务器里的数据库了(?),试着连服务器登 MySQL 还是报错,也还是报:

4-1

这个的确没办法了。我到网上找了很多方法,也分析了我服务器和他们给出解决办法对应的环境之间的差别,发现没有一个适合我的。

首先,我的 /tmp 文件夹下是没有 mysql.sock 这个文件存在的。
其次,我反复卸载过 MySQL,目前的 MySQL 版本应该是 8.0。
最后,

1
find / -name mysql.sock

没有给出任何我想要的信息。
同时我也检查了:

1
2
service mysql status
service mysqld status

但是

返回告诉我 mysql 是有这个服务的,但是 mysqld 便没有。
其实挺奇怪的。也怪我,我现在也不太清楚 mysqld 和 mysql.service 之间的差异,或许它们就是一回事儿?或许它们完全不一样……

我依稀记得在装载 MySQL 8.0 的时候,安装包把 my.ini 放在了 /etc 文件夹。
接着我 cat 了它,修改了里面 socket 的值。

4-2

那两个值可以说是我乱填的,但是我看到:

4-3

可以说 系统运行的 MySQL 服务 就是连接着这个 my.ini。(其实也没啥兴奋的,我电脑里就那么几个 my.cnf)

4-4

(docker 的肯定不是,www 的是宝塔,剩下的两个 cat 一下就发现不对劲了,啥配置都没有)

改成正确的文件夹之后,就可以运行了。(我的 mysqld.sock 在 /var/run/mysqld 里面)

4-5

(忘了 user 表到底叫什么了,没办法,老笨比了)