mysql报错 ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

在这里插入图片描述
这就要说Linux平台环境下Mysql 主要有两种连接方式
(1)TCP/IP
(2)socket

一般情况下客户端在一台服务器上, 而MySQL实例在另一台服务器上,两台机器通过一个TCP/IP网络连接
对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用
通过TCP/IP连接MySQL实例时,MySQL会先检查一张权限表,用来判断发起请求的客户端IP是否允许连接到MySQL实例。该表就是MySQL库下面的user表。

shell>mysql -u username -p password -P port -h IP
[root@tse2 bin]# mysql -u root -p 123456 -P 3306 -h 192.168.0.2

mysql客户端连接图示
UNIX Socket连接方式其实不是一个网络协议,所以只能在MySQL客户端和数据库实例在同一台服务器上的情况下使用。

shell>mysql -u username -p password -S /mysql/tmp/mysql.sock
[root@tse2 bin]# mysql -u root -p 123456 -S /mysql/tmp/mysql.sock

mysql.sock的作用是server和client在同一台服务器,并且使用localhost进行链接的时候,就会使用socket来进行连接,也就是:为主机名为localhost建立的MySQL连接,该连接过程通过一个套接字文件mysql.socket实现的。所以该文件被删后,用localhost用户是连接不到MySQL服务器的。而mysql.sock是随每一次 mysql 启动生成的,已经根据Mysql配置文件(mysql.ini/mysql.cnf)重启mysql时重新生成了一次,信息已跟着变更
注意:mysql.sock是一个临时文件,启动mysql后才会生成。
报错的原因:而linux(默认)将其放在/tmp目录。
配置文件(mysql.ini/mysql.cnf)中指定套接字文件的路径,如socket=/mysql/tmp/mysql.sock

解决方法

查看 /tmp 目录下是否存在 以.sock结尾的文件,有的话进行删除

 find /tmp -name  mysql*.sock  

然后重启mysql,查看mysql的配置文件,查看mysql配置文件my.cnf的文件的socket的配置路径(我的为/tmp/mysql-5.6.sock).是否存在
在这里插入图片描述
重新连接 mysql -uroot -p
在这里插入图片描述
还是报原来的错误,这是我们需要创建软链接,源文件必须为前文my.cnf中自己配置的socket文件的路径 ,目标文件则为报错时的mysql.sock文件目录,我的为/tmp/mysql.sock

sudo ln -s /tmp/mysql-5.6.sock  /tmp/mysql.sock

这时重新使用命令就可链接上
引用链接博客
Tse先生 https://www.cnblogs.com/Sungeek/archive/2020/01/16/12200546.html
Trrrrinity https://blog.csdn.net/github_37216944/article/details/78843685

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值