mysql.sock连接问题
second60 20200705
在mysql中,有两种连接方式: tcp, sock.
Sock 是unix原生套接字,速度比tcp的快, 所以不指定ip, 端口时,会当作本地连接,也就是会使用 mysql.sock连接。
mysql服务器在启动时,会生成一个unix套接字,名为mysql.sock. 默认目录在:/var/lib/mysql/mysql.sock.
mysql服务器启动时会读取默认配置文件my.cnf.
在我们的服务器安装目录的下面。
里面可以配置mysql.sock的路径
[mysqld]
sock=/tmp/mysql.sock
但经常有个坑, 就是mysql客户端启动时,如果没有指定ip,port时,mysq客户端会使用sock连接方式,而且会默认去读/etc/my.cnf.
问题1 : 如果/etc/my.cnf配置,mysql客户端会去查找
[client]
sock=/tmp/mysql.sock
查看这个sock是否和服务器的配的sock一致
问题2: 如果有/etc/my.cnf配置,但没有sock这个参数,那么mysql客户端会默认sock的位置为: /var/lib/mysql/mysql.sock
如果服务端有修改路径,那么两个sock不同路径,也是会连接失败
问题3:如果/etc/my.cnf 没有此文件,也会同问题2一样到默认路径中搜索
我们指定即可
怎么查找my.cnf中的mysql.sock路径
- 安装目里查找my.cnf

- /ect/my.cnf里查找
![]()
- Ps -ef | grep mysql查找启动参数

所以下次遇上此问题,解决方面有两种
- 如上所述,去查找客户端和服务器中的mysql.sock中的路径是否不一样,不一样会出现上面的问题(特别是重装mysql后,之前配置了路径,重装时默认或指定路径不一样)
- 在连接时指定ip, port,用tcp的方式去连接,非unix域套接字
Mysql -u root -p -h xxxx,xxx,xxx,xx
本文探讨了MySQL通过UNIX套接字mysql.sock进行连接时可能遇到的问题,包括客户端与服务器配置不一致导致的连接失败。解决方法包括检查并确保mysql.sock路径匹配,或使用TCP方式明确指定IP和端口进行连接。
4万+

被折叠的 条评论
为什么被折叠?



