问题起因
今天一个客户突然发现他的数据库莫名其妙挂掉,一直无法重启。通过phpMyadmin访问数据库一直提示“mysqli::real_connect(): (HY000/2002): Connection refused on Live”,可以理解链接无法生存或者链接无法正确建立。
客户参照网上的教程对phpmyadmin的相关代码进行修改,毫无作用可言。最终,用户选择了重启mysqld服务,然而进一步报错“Starting MySQL...The server quit without updating PID file [FAILED]ysql/mysql.pid).”大概意思是mysql服务器关闭但没有正确刷新PID文件。
解决过程
百度搜索无果,咱们还是去老实检查my.cnf配置文件和mysql错误日志吧。
首先检查mysqld的配置文件/etc/my.cnf文件,打开发现datadir=/data/mysql,实际找到的目录是/data/Mysql,(经过操作发现他服务器区分大小写)找到错误一个先修正。
然后,重启mysqld发现问题依然存在。
继续查看错误日志,最终发现错误:
开启科普模式,/tmp/mysql.sock是一个临时文件,本身并不存在,是在mysqld启动时自动生成的文件。
我们首先需要检查为什么mysql.sock文件没有正确生成。
这里纠正一个严重的错误,在心灵博主的指导下使用了纯净系统进行测试,/tmp文件夹属于root用户,权限777,里面的文件mysql.sock数据mysql用户。
修正如下命令
chmod 777 /tmp
然后重新启动mysqld,正常启动。
小结
这次问题的经验告诉我们,网上的资料存在时效性,搜到的东西并不一定适用于当前网络环境所产生的问题。我们只有通过实践操作,实践寻找问题,找到问题,最终才能正确的解决问题。理论和实践相结合去学习linux运维才是硬道理,实事求是解决问题才是真服务。

2019年5月31日 23:40 1F
/tmp文件夹所有者本身就该是root。
正确的做法应该是 chmod 777 /tmp
那客户心也是真大,一言不合就重装。
2019年5月31日 23:41 B1
@ 心灵博客 不是的,那个目录需要给mysqld:mysqld授权,不然无法创建sock入口文件
2019年6月1日 00:15 B2
@ 自然 建议你再了解下
2019年6月1日 13:45 B3
@ 心灵博客 谢谢,有木有文章可以给我参考一下
2019年6月2日 11:17 B4
@ 自然 你可以装一个干净的linux系统看一下。到底是属于哪个用户的,如果你已将所有者给mysql,而权限不是777的话。其他某些软件的进程会出问题的。
2019年6月2日 14:09 B4
@ 心灵博客 好的,感谢
2019年6月1日 14:05 2F
搜索引擎是我等小白解决疑难杂症的必备手段!
2019年6月1日 14:06 B1
@ 简单生活 搜索引擎是一个好东西,但是百度很误导人
2019年6月1日 14:08 B2
@ 自然 百度也快把自己玩死了,已经跌出了BAT
2019年6月1日 14:09 B3
@ 简单生活 移动端百度强制安装App,已经没有用法了
2019年6月1日 17:10 3F
非技术的路过。
2019年6月1日 17:49 B1
@ repostone 这句话好耳熟啊,明月大佬的博客上
2019年9月23日 13:03 4F
你估计的这个mysqld守护进程也太搞笑了吧。。。那个是mysqld的守护进程???这个是你每次执行grep命令本身的进程。跟MySQL没有半毛钱关系
2019年9月24日 18:48 B1
@ 小白 感谢纠正,原来grep命名还有这种情况:一般情况输出一条内容,基本输出的是grep命令本身的进程