在新的服务器安装了MySQL,结果使用
mysql -hlocalhost -uroot -p
命令登录的时候提示
Can’t connect to local MySQL server through socket /tmp/mysql.sock
发现那个目录下没有这个文件
一开始也没当回事,因为我把localhost换成127.0.0.1 就行了
mysql -h127.0.0.1 -uroot -p
似乎看起来第一种通过socket登录的方式有问题。用第二种IP登录的没问题。
然后今天在看书的时候了解到
连接MySQL数据库的操作其实是一个连接进程和MySQL数据库实例之间的通信,本质上是进程间通信。而进程间通信的方式则有管道命名管道、TCP/IP套接字、UNIX域套接字等。所以很明显,我上面的第二种登录方式就是TCP/IP套接字登录方式。而第一种方式是Unix域套接字的方式,只能在Linux和Unix环境下使用。然后我去看了一下配置文件中
socket=/var/lib/mysql/mysql.sock
似乎并没有按照这个配置找,还是去了/tmp/mysql.sock 下面找的。
PS:这里也可以使用-S参数手动指定socket文件,这样也是可以的。
mysql -hlocalhost -uroot -p -S /var/lib/mysql/mysql.sock
然后从网上发现了问题,
用rpm安装的话,mysql客户端sock默认是去读取/var/lib/mysql/mysql.sock
采用源码安装,mysql客户端sock默认是去读取/tmp/mysql.sock
所以需要在配置文件中添加客户端的socket配置
[client] socket = /var/lib/mysql/mysql.sock 重启即可。