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

本文详细描述了一个监控MySQL启动的shell脚本在遇到ERROR2002(HY000)错误时的解决过程。通过将MySQL.sock文件移出tmp目录并修改my.conf配置文件,成功解决了无法连接本地MySQL服务器的问题。同时,脚本进行了优化以在killall mysqld命令后仍能正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做一个简单的监控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 成功了

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








根据提供的引用内容,出现"ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)"错误通常是由于MySQL服务器无法通过指定的套接字连接到本地MySQL服务器引起的。这可能是由于以下原因导致的: 1. MySQL服务器未启动:请确保MySQL服务器已经启动。可以使用以下命令检查MySQL服务器的运行状态: ```shell service mysql status ``` 2. MySQL服务器套接字文件路径不正确:请确保MySQL服务器套接字文件的路径与配置文件中的路径一致。可以使用以下命令查看MySQL服务器套接字文件的路径: ```shell grep "socket" /etc/mysql/my.cnf ``` 3. MySQL服务器套接字文件权限问题:请确保MySQL服务器套接字文件的权限正确。可以使用以下命令更改套接字文件的权限: ```shell sudo chmod 777 /tmp/mysql.sock ``` 4. MySQL服务器配置文件错误:请检查MySQL服务器的配置文件(通常是/etc/mysql/my.cnf)是否正确配置了套接字文件路径。可以使用以下命令编辑配置文件: ```shell sudo nano /etc/mysql/my.cnf ``` 然后找到并修改以下行: ```shell socket = /tmp/mysql.sock ``` 5. MySQL服务器端口被占用:请确保MySQL服务器所使用的端口没有被其他进程占用。可以使用以下命令查看端口占用情况: ```shell sudo netstat -tlnp | grep mysql ``` 如果以上方法都无法解决问题,可能需要重新安装MySQL服务器或者联系系统管理员进行进一步的故障排除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值