【MYSQL】mysql.sock连接问题

    技术2026-09-01  6

    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

     

     

     

    Processed: 0.008, SQL: 9