### 登录数据库时显示报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
**该错误为找不到/tmp下的mysql.sock文件**
1.cd /tmp
2.ls 查看该目录下是否存在mysql.sock文件
**以上两步执行如果找不到可执行下面命令**
```
find / -name mysql.sock
```
#如果可以查到该文件,只需要做一个软连接到/tmp目录下即可。
#若执行上述命令后没有回显,说明没有找到mysql.sock
**在这之前,需要明白mysql.sock这个文件有什么用?**
连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。
如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。
如果和我一样,重启服务器还是没有任何变化,你可以先执行下面的语句:
```
mysql -uroot -h 10.0.0.10 -p
```
正常情况下这条命令是可以被执行的。
你需要更改my.cnf文件
```
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/src/mysql
datadir=/data/mysql
#socket=/tmp/mysql.sock
socket=/var/lib/mysql/mysql.sock
port=3306
skip_name_resolve=1
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[mysql]
#socket=/tmp/mysql.sock
socket=/var/lib/mysql/mysql.sock
```
![image.png](/upload/2023/08/image-34c575af21684bdd97c9f6830b4689ae.png)
修改后保存退出,并且将目录权限修改,若此目录不存在则提前创建
```
chmod 777 /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
```
重启mysql服务
```
systemctl stop mysqld
pkill -9 mysqld
systemctl start mysqld
```
查看mysql服务是否启动成功(3306端口)
```
[root@centos7 ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 80 [::]:3306 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
```
数据库服务启动成功后进入到目录下查看
ls /var/lib/mysql
mysql.sock mysql.sock.lock
发现mysql.sock文件创建成功,执行命令测试是否可登录数据库
```
mysql -uroot -p -S /var/lib/mysql/mysqld.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.42 MySQL Community Server (GPL)
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
```
发现登录成功,问题解决。若不修改/etc/my.conf 文件的访问地址也可做软连接到/tmp目录下实现登录
```
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
ls /tmp
mysql.sock
```
执行命令将mysq服务添加到开机自启
systemctl enable mysqld