亲测有效,解决Can ‘t connect to local MySQL server through socket ‘/tmp/mysql.sock ‘(111) “;

错误:

         

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

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

find / -name mysql.sock

 

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

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

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

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

 

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

#放权限
chmod 777 /var/lib/mysql

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

#重启mysql
service mysql  restart

#重启mysqld
service mysqld restart

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

[root@localhost ~]# 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.

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

[root@localhost ~]# mkdir /var/run/mysqld
[root@localhost ~]# chmod 777 /var/run/mysqld/
[root@localhost ~]# service mysqld start
[root@localhost ~]# 

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

[root@localhost ~]# ls /var/run/mysqld mysqld.pid mysqld.sock mysqld.sock.lock

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

 

Guess you like

Origin blog.csdn.net/m0_58719994/article/details/121849554