ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

来源:互联网 发布:大智慧扩展数据属性 编辑:程序博客网 时间:2024/05/17 17:15

今天做一个简单的监控MySQL启动的一个shell出现了

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

出现过程如下:

新建shell脚本文件vi db.sh 如下

#!/bin/sh
port=$(netstat -lnt|grep 3306|wc -l) #通过端口号查看MySQL数据库3306是否启动:wc -l 来统计行数 如果能已经启动 则返回1 否则0
if [ $port -eq 1 ]
then
       echo "db is running"
else
  mysql -uroot -p123456
   if [ $? -eq 0 ]
        then
            echo "db starting";
   fi
fi
第一次执行,会出现 db is running 

当使用脚本 killall mysqld 杀掉MySQL进程时然后再次运行 sh db.sh 出现如下问题

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

有的说是权限的问题:chown -R mysql:mysql /tmp

执行之后对我来说没什么卵用,错误依然出现,

最后进入到tmp下面发现 mysql.sock 没了,于是乎 我重启了虚拟机

启动之后:进入tmp 中,发现mysql.sock 这个东西已在心稍安:执行 sh db.sh 输出 db is running 

然后又用命令:killall mysqld 杀掉MySQL进程,再次执行sh db.sh 发现错误重现,额的小心脏啊 

总结:执行 killall mysqld 时会清掉tmp中的mysql.sock 再次启动所以还会报错

思路:不要把它放到tmp文件中 移动到别的文件中,但是怎么去指定这个文件中 于是乎又进入百度

百度这个神奇的东西也没让人失望找到解决方案:修改/etc/my.conf:

[mysqld] 
datadir=/usr/local/mysql/data 
socket=/usr/local/mysql/mysql.sock 
[mysql.server] 
user=mysql 
basedir=/usr/local/mysql 
[client] 
socket=/usr/local/mysql/mysql.sock

执行mysql -uroot -p123456 错误还再:

重新启动服务器:/etc/init.d/mysql start

Starting MySQL. SUCCESS! 

over 告一段落:重复上面动作 执行killall mysqld 杀掉mysql进程 再次执行sh db.sh 发现还是有错 

修改db.sh 脚本:

if [ $port -eq 1 ]
then
       echo "db is running"
else
  /etc/init.d/mysql start
   if [ $? -eq 0 ]
        then
            echo "db starting";
   fi
fi

再次执行输出:db starting 成功了

再辞职感谢百度提供那么好的平台还有那些乐于分享的人给的提示








0 0
原创粉丝点击