亲测有效,解决Can ‘t connect to local MySQL server through socket ‘ tmp mysql

文章讲述了作者在阿里云租用的Ubuntu服务器上配置MySQL时遇到的mysql.sock文件丢失问题,详细解释了该问题的原因,如何通过软链接、重启服务器、修改my.cnf和创建/var/run/mysqld目录来解决,以及分享了Linux运维学习资源的相关信息。
摘要由CSDN通过智能技术生成

最近租了一个阿里云云翼服务器,趁着自己还是一个学生,享受一下优惠。我租的是阿里云Ubuntu16.04版本的服务器,在搭建mysql的时候,一开始是可以运行的,由于某次手抽,把mysql的套接字文件不小心删除了,然后无论怎么卸载重装,都出现了这个问题:

root@iZufkfljcZ:~# mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

网上找了好久,搜到的全部是重复的文章而且也没讲明为什么出现这个问题,找了一天才找到一篇讲解mysql.sock文件作用的文章,然后分析一下为什么出现这个问题,现在讲之总结一下,以备后人查阅。

我出现的问题是:找不到mysql.sock,如果你可以运行

find / -name mysql.sock

这条命令,并且能查到结果的话,只需将查到的结果做一个软连接到/tmp目录下即可解决(网上都是这么解决的)。

但是,我执行了这条语句之后,并没有任何反应,没有找到mysql.sock文件。

在这之前,需要明白mysql.sock这个文件有什么用?

连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。

如果和我一样,重启服务器还是没有任何变化,你可以先执行下面的语句:

# mysql -uroot -h 127.0.0.1 -p 

不出意外,这句话应该是可以执行的,
你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接

如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,我的解决办法是重新指定一个不同的套接字,或者说,我现在没有mysql.sock文件,所以我要想办法生成一个。

首先,更改my.cnf文件,我的服务器中的目录为/etc/my.cnf,如果没有的话可以用find去查找,

接下来就是保存退出,然后确保这个目录存在,并且将这个目录的权限修改一下

# chmod 777 /var/lib/mysql

准备步骤做好,然后就是mysql和mysqld服务重启

# service mysql  restart
# service mysqld restart

我在重启mysqld服务的时候,重启失败了,显示如下:

root@iZufkfljcZ:~# service mysqld start
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalc
tl -xe" for details.

这个时候,提示可以输入systemctl status mysqld.service去查看具体的失败原因,于是:

****************************************************************************************

root@iZufkfljcZ:~# systemctl status mysqld.service
mysqld.service - LSB: start and stop MySQL
  Loaded: loaded (/etc/init.d/mysqld; bad; vendor preset: enabled)
  Active: failed(Result: exit-code) since 三 2017-12-20 10:38:30 CST; 45s ago
Docs: man:systemd-sysv-generator(8)
 Process: 2154 ExecStart=/etc/init.d/mysqld start (code=exited, status=1/FAILURE)

12月 20 10:38:29 iZufkfljcZ systemd[1]: Starting LSB: start and stop MySQL…
12月 20 10:38:29 iZufkfljcZ mysqld[2154]: Starting MySQL
12月 20 10:38:29 iZufkfljcZ mysqld_safe[2689]:Logging to ‘/var/log/mysql/error.log’.
12月 20 10:38:29 iZufkfljcZ mysqld_safe[2693]:Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.
12月 20 10:38:30 iZufkfljcZ mysqld[2154]: . * The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Control process exited, code=exited status=1
12月 20 10:38:30 iZufkfljcZ systemd[1]: Failed to start LSB: start and stop MySQL.
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Unit entered failed state.
12月 20 10:38:30 iZufkfljcZ systemd[1]: mysqld.service: Failed with result ‘exit-code’.

****************************************************************************************

根据提示可知,/var/run/mysqld目录不存在,也就是说mysqld服务重启需要这个目录,那就建一个吧:

root@iZufkfljcZ:~# mkdir /var/run/mysqld
root@iZufkfljcZ:~# chmod 777 /var/run/mysqld/
root@iZufkfljcZ:~# service mysqld start
root@iZufkfljcZ:~# 

建完目录后,重新运行mysqld服务,发现重启成功了,那么我们再来看看为什么刚才要建这个目录呢?打开这个目录看看:

root@iZufkfljcZ# ls /var/run/mysqld
mysqld.pid  mysqld.sock  mysqld.sock.lock

发现了一个熟悉的东西,mysqld.sock,但是这个是不是我们需要的东西呢?不管他,先用这个sock文件登下mysql看看行不行:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-CpJgXYKa-1712886640156)]

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" 是一个错误提示,它表示无法通过指定的socket连接到本地的MySQL服务器。这个错误通常出现在使用PHP连接MySQL数据库时。我们可以通过以下方法来解决这个问题: 1. 确认MySQL服务器是否正在运行。可以使用以下命令来检查MySQL服务器的运行状态: ``` systemctl status mysql ``` 2. 确认MySQL服务器是否使用了正确的socket路径。通过检查MySQL配置文件中的socket路径来确认,配置文件的位置通常是`/etc/mysql/mysql.conf.d/mysqld.cnf`。 3. 如果socket路径配置正确,但仍然出现错误,可以尝试手动创建socket文件。使用以下命令可以创建socket文件: ``` sudo touch /tmp/mysql.sock ``` 4. 如果手动创建socket文件后仍然无法解决问题,可以尝试修改MySQL配置文件中的socket路径,将其指向正确的位置。确保修改后重新启动MySQL服务。 总结起来,要解决"Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"的问题,我们需要确认MySQL服务器是否运行,检查配置文件中的socket路径是否正确,并尝试手动创建socket文件。如果问题仍然存在,可以尝试修改配置文件并重新启动MySQL服务。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Can't connect to local MySQL server through socket](https://blog.csdn.net/qq_35462323/article/details/105024596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Can’t connect to local MySQL server through socket解决方法](https://blog.csdn.net/weixin_34112900/article/details/93854948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值