mysql客户端与服务端学习
转自:https://www.cnblogs.com/Sungeek/p/12200546.html,https://juejin.cn/post/7119878941589897247
1.连接方式
只考虑在Linux环境下,在不同主机之间是TCP/IP连接(不同主机间的网络通信),同一主机的客户端和服务端是socket连接(同一主机的进程间通信)。
运行的Mysql客户端程序以及服务端程序其实都是操作系统上的一个进程,客户端和服务端的通信其实就是两个进程间的通信。
1.1 TCP/IP
一般情况下客户端在一台服务器上,而MySQL实例在另一台服务器上,两台机器通过一个TCP/IP网络连接。通过TCP/IP连接MySQL实例时,MySQL会先检查一张权限表,用来判断发起请求的客户端IP是否允许连接到MySQL实例。该表就是MySQL库下面的user表。
连接例子:
[root@tse2 bin]# mysql -u root -p 123456 -P 3306 -h 192.168.0.2
1.2 socket套接字
UNIX Socket连接方式其实不是一个网络协议,所以只能在MySQL客户端和数据库实例在同一台服务器上的情况下使用。连接例子:
[root@tse2 bin]# mysql -u root -p 123456 -S /mysql/tmp/mysql.sock
2.服务端处理过程
不论客户端和服务端如何通信,其实最终的效果就是客户端向服务端发送一段文本(SQL语句),服务端向客户端返回一段文本(处理结果),具体过程:
查循缓存在mysql8.0已移除该功能,维护缓存需要的成本高。
//具体介绍可参考第二个链接,就不再复制了。