记录一次不太成功的解决过程
服务器版本:CentOS 7.9
数据库版本:Mysql 5.7
问题描述:
嗯,有点烦躁。一开始,just想要搭一个AWD平台,突然觉得主机名有点长,耽误看代码,就改了一下,然后重启了服务器,MySQL就GG了
直接连接
查看mysql和mysqld的状态
尝试启动
有点棘手
解决过程:
算了,这名字不改也罢,改回去重启一下
更改名关系不大,,,改回去罢
大不了从装Mysql
在MySQL中,socket(套接字)是一种网络通信机制,用于在同一台机器上的不同进程之间进行通信。mysql.sock会在MySql服务器启动时自动创建,这也就解释了使用[mysql -uroot -p]无法登录数据库。
有一个比较奇怪的发现,刚开始我的想法是自己创建连个文件GT.err和GT.pid,但是意外创建了两个文件夹,然后,我就发现mysql.service可以启动了;不过这是虚假的,只是类似于骗过了检查机制,无论我如何尝试也无法登录MySQL。这里问题,,,,不好说,暂时不想处理,应该是操作系统的BUG
不过,也有了一个发现,现在的关键问题在于如何找GT.pid这个文件。
接下来,只要解决这个问题,差不多就能真正启动MySQL了
查看了一下/etc/my.cnf文件和/etc/inid.t/mysqld文件,有了一些发现
于是,我定义了一条pid路径,并效仿其他PID文件,写了一个数字3306
再次成功启动了,
但是,,,
还是虚假的启动,系统并没有给MySQL服务器分配资源,也许,PID必须是系统赋予的,怎么能想当然的人为赋予。
我有些怀疑问题是出在操作系统,还是MySQL。
我查询了一些文章,都没有赋值这种操作,哎,
不对劲,,,在一个MySQL社区上找到一篇文章,说是可以这么写,但针对的是hostname.pid
既然它这么说了,那么说明这个方法的确是可行的,
对于无法登录数据库,这应该就是其他问题了(诶?这样说的话,之前我以为的MySQL服务器启动的时候会自动创建mysql.sock文件是错误的?)
最终结果:
依旧没有解决,最后决定,,,删库吧,顺便换一下操作系统,哎,这次的教训有两条:
- 不要随便关闭服务器;
- 数据库要随时做好备份。
之后,可能是因为MySQL配置没有变,直接将data下的MySQL数据库的文件夹备份下来,放到新的/www/server/data目录下,在修改一下权限,数据没有消失,芜湖。emmm,不对,数据消失了,只剩下一些表名,哎,浪费了一天时间。还是得重新写一个数据库。
参考大佬的文章:
- centos7 mysql 机器重启后pid文件丢失导致mysql 服务无法重启_mysqld.pid-优快云博客
- 丢失了文件localhost.localdomain.pid和mysql.sock怎么办? | OurMySQL
- MySQL启动常见错误:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘_error 2002(hy000) mysql.sock-优快云博客
- 解决 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)超详细_解决 error 2002 (hy000): can’t connect to local mysq-优快云博客