【MYSQL】mysql.sock连接问题

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路径

  1. 安装目里查找my.cnf

  1. /ect/my.cnf里查找

  1. Ps -ef | grep mysql查找启动参数

 

 所以下次遇上此问题,解决方面有两种

  1. 如上所述,去查找客户端和服务器中的mysql.sock中的路径是否不一样,不一样会出现上面的问题(特别是重装mysql后,之前配置了路径,重装时默认或指定路径不一样)
  2. 在连接时指定ip, port,用tcp的方式去连接,非unix域套接字

Mysql -u root -p  -h xxxx,xxx,xxx,xx

 

 

 

你可能感兴趣的:(mysql数据库,mysql,数据库)