Can’t connect to local MySQL server through socket /tmp/mysql.sock

在新的服务器安装了MySQL,结果使用mysql

mysql -hlocalhost -uroot -p 

复制代码

命令登陆的时候提示sql

Can’t connect to local MySQL server through socket /tmp/mysql.sock
复制代码

发现那个目录下没有这个文件数据库

一开始也没当回事,由于我把localhost换成127.0.0.1 就好了bash

mysql -h127.0.0.1 -uroot -p 

复制代码

彷佛看起来第一种经过socket登陆的方式有问题。用第二种IP登陆的没问题。服务器

而后今天在看书的时候了解到
链接MySQL数据库的操做实际上是一个链接进程和MySQL数据库实例之间的通讯,本质上是进程间通讯。而进程间通讯的方式则有管道命名管道、TCP/IP套接字、UNIX域套接字等。因此很明显,我上面的第二种登陆方式就是TCP/IP套接字登陆方式。而第一种方式是Unix域套接字的方式,只能在Linux和Unix环境下使用。而后我去看了一下配置文件中socket

socket=/var/lib/mysql/mysql.sock
复制代码

彷佛并无按照这个配置找,仍是去了/tmp/mysql.sock 下面找的。
PS:这里也能够使用-S参数手动指定socket文件,这样也是能够的。ui

mysql -hlocalhost -uroot -p -S /var/lib/mysql/mysql.sock
复制代码

而后从网上发现了问题,spa

用rpm安装的话,mysql客户端sock默认是去读取/var/lib/mysql/mysql.sock
采用源码安装,mysql客户端sock默认是去读取/tmp/mysql.sock
复制代码

因此须要在配置文件中添加客户端的socket配置code

[client] socket = /var/lib/mysql/mysql.sock 重启便可。server

相关文章
相关标签/搜索