问题起因
今天一个客户突然发现他的数据库莫名其妙挂掉,一直无法重启。通过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运维才是硬道理,实事求是解决问题才是真服务。