解决数据库无法登录的问题(ERROR 2002)

### 登录数据库时显示报错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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值