侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

MySQL 2002 (HY000):无法通过套接字连接到本地MySQL服务器

与晚风述往事
2021-10-21 / 0 评论 / 0 点赞 / 324 阅读 / 1,347 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-10-21,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

错误信息

【汉】2002 (HY000):无法通过套接字连接到本地MySQL服务器

【英】2002 (HY000):Can't connect to local MySQL server through socket '%s' (%d)

刚刚安装完的数据库,使用mysql -uroot -p命令连接到MySQL命令窗口报错。
mysql_2002_1

版本

我个人猜测啊,注意,是我个人猜测,所有数据库版本都可能会发生。

从官方文档中得知,Unix上的MySQL客户端,可以有两种方式连接到数据库。这两种方式分别是:

  • Unix套接字(socket)文件
  • TCP/IP方式

首先是套接字(socket)方式,这种方式在连接速度上比TCP/IP快,但是它只能在连接到同一台服务器时使用(就是数据库的服务端和客户端在同一个服务器上)。在使用客户端连接时,它默认情况下会用/tmp目录下的mysql.sock文件去跟服务器通信。当然,这个路径也是可以更改滴!**注意,接下来是套接字连接重点!**在使用mysql连接到服务端时,只要没有指定主机名(ip地址),就会使用此方式进行连接。

说完套接字连接方式,就轮到TCP/IP了。想想TCP/IP方式也没啥可以说的,一句话概况就是客户端通过IP地址和端口号进行连接。使用起来也很简单,就是指定ip和端口,客户端就会自动使用该连接方式。到这里,再多提一句,TCP/IP是全部平台都能够使用的,而套接字只有Unix平台能够使用。

注意,指定ip如果是localhost,则会使用套接字方式连接。

看到这里后,相信你也已经初步了解TCP/IP方式和套接字方式了,接下来就该说说咋排查是不是套接字文件的问题。

首先我们去检查一下MySQL数据库的配置文件,由于我这里没改过配置文件的路径,就直接查看/etc/my.cnf就行了。如果你使用的不是默认配置文件,那么就查看自己配置的文件路径。

[root@localhost mysql]# cat /etc/my.cnf
mysql_2002_2

检查完配置文件,就知道问题出在哪里了。[mysqld]下的socket是有指定的,并且指定路径是/usr/local/mysql/mysql.sock,而客户端由于没有指定socket参数,则使用默认/tmp/mysql.sock。客户端和服务端的参数不一致,肯定就没法连接了嘛!就想两个人一样,一个在南方,一个在北方,怎么可能交流呢!别钻牛角尖啊,我说的是面对面交流。

知道问题后,解决起来也就简单了,在配置文件中加个客户端socket就行了。

修改配置文件
在配置文件的下面新增一条客户端的socket参数。

[root@localhost mysql]# vim /etc/my.cnf

[client]
socket=/usr/local/mysql/mysql.sock

mysql_2002_3

再次连接

[root@localhost mysql]# bin/mysql -uroot -p
mysql_2002_4

这不就解决了,不过也没有必要非要使用套接字连接。顺道说下怎么使用TCP/IP连接吧!使用TCP/IP只需要指定ip和端口就行了,至于说的速度慢,我个人没感觉有啥差别,可能在不同服务器的时候就能看出差距了。

[root@localhost mysql]# bin/mysql -h 127.0.0.1 --port 3306 -uroot -p

mysql_2002_5

0

评论区