在观察MySQL本地连接的时候,发现对mysql.sock是个啥我不明白,于是我提出了一个问题:mysql.sock到底存了什么信息?
根据多方查资料和自我思考,我有了自己的一些认识和结论,但结论并不一定正确,欢迎大家指教。
连接MySQL
连接MySQL的操作实际上是启动一个连接进程和MySQL数据库实例进行通信,本质上属于进程间通信,而进程通信的方式有管道、命名管道、命名字、TCP/IP套接字、UNIX套接字。MySQL数据库提供的方式有3种:
TCP/IP套接字方式
命名管道和共享内存(Windows平台独有)
UNIX套接字(UNIX平台独有)
TCP/IP套接字方式是MySQL数据库在任何平台都提供的连接方式,一般用于客户端和服务端不在同一台服务器上,基于网络的远程连接请求。
笔者使用的是UNIX服务器,所以不了解Windows相关的内容,在使用UNIX域套接字时,一般用于客户端和服务端在同一台服务器上的情况,而该套接字并不是一个网络协议,只是用于同机器连接通讯的载体。
mysql.sock文件
我们可以在配置文件my.cnf中指定套接字文件的路径:
[mysqld]
socket = /tmp/mysql.sock
也可以在启动时指定socket文件的路径:
# 以下两种均可
./mysqld_safe --socket=/tmp/mysql.sock
./mysqld_safe -S /tmp/mysql.sock
在启动MySQL之后我们可以查询socket文件的路径:
m