我的环境
(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,还是报错,那就删除它,再重新生成一个。