(2002, “Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)“)——CentOS7.7篇

我的环境

(1)服务器Linux版本:

// 查看服务器版本信息
cat /etc/redhat-release

我的是CentOS 7.7.1908
在这里插入图片描述
(2)MySQL版本:

// 查看MySQL版本信息
mysql --version

我的是MySQL 5.7.28
在这里插入图片描述
这里推荐一个安装MySQL教程,其中最主要的是有完全卸载和删除MySQL安装文件的方法,亲测可用,相信我不安装卸载个两三次,哪能称得上在服务器安装过MySQL。殊不知在之前的安装过程中,本艺术家的体验真的是:fu*&¥*&@#……@ck!(nice!)。
点击链接:CentOS 7 下使用yum安装MySQL5.7.20 最简单 图文详解

(3)需求环境
本艺术家是在开发基于Flask框架项目时,需要把工程部署到服务器上,对,还用到了nginx+uwsgi

错误解析

2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"这个问题其实已经相当的经典了。首先,我们不应该直接复制这段话就去查,这样查出来的信息很多,需要浏览很久,尝试不少方法,而且大部分是怎么在Django下解决这一经典问题的。
看错误提示:/tmp/mysql.sock,这个才应该是关注点。去服务器看看 tmp 文件夹?,我去还支持表情了?????,可以的:
在这里插入图片描述
我的是有的,因为我解决了。如果没有那就恭喜你了,因为解决方法很简单。

先确定几个前提

(1)防火墙是否关闭:
防火墙是需要关闭的,查看防火墙状态,若是开启就关闭它,所需命令如下。

7.查看防火墙状态
systemctl status firewalld

8.开启防火墙
systemctl start firewalld

9.关闭防火墙
systemctl stop firewalld

(2)MySQL服务是否开启:
MySQL需要开启,查看MySQL状态,若是关闭就开启它,所需命令如下。

1.启动MySQL
[root@localhost download]# systemctl start mysqld

2.查看MySQL状态
[root@localhost download]# systemctl status mysqld

(3)nginx服务是否开启:
nginx需要开启,查看nginx状态,若是关闭就开启它,所需命令如下。

1.查看状态
systemctl status nginx.service

如果有此错误:`Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.`
注意:这个错误是修改了 nginx.conf之后,修改有误,查看修改之后有木有丢掉分号,或者里面包含了中文等。

2.开启NGINX
syatemctl start nginx.service

以下供参考,不是必须
(4)相应的端口是否开启:

2.查看端口占用情况
netstat -ntlp|grep 80

3.杀灭进程
kill -9 进程号

如果要查看某个端口是否开启,需要开启防火墙:

2.查询指定端口是否已开 
firewall-cmd --query-port=5000/tcp	提示 yes,表示开启;no表示未开启。

开启某个端口:

3.打开某个端口
firewall-cmd --zone=public --permanent --add-port=8010/tcp

确保MySQL和nginx都是开启状态,防火墙是关闭状态。

解决问题

在本机查找mysql.sock文件

find / -name mysql.sock

在这里插入图片描述
红色框显示的是:安装的MySQL路径;
绿色框是 /tmp/ 文件夹?里的,如果你这里没有的话,就是因为缺了这个东西才报错的,就是这个错误❌2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

也很好解决
建立一个软连接可以解决这个问题。

**格式:ln -s 【你的MySQL安装路径】/tmp/mysql.sock **
我这里是:

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

执行该命令后,检查一下 /tmp/ 文件夹?里,应该就会有了。完美解决!!
如果文件夹/tmp/中是已经有了mysql.sock,还是报错,那就删除它,再重新生成一个。


版权声明:本文为PFzcnds8310__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。