建立连接
mysql是(客户端/服务器)c/s模型,通过网络进行消息通信。客户端和服务器建立连接,首先要建立tcp连接,在进行用户和密码认证,完成之后才真正的建立mysql连接。
1. 客户端发送connect()进行连接,服务器端接收到建连请求,创建连接的socket。mysql_server启动之后,端口处于监听状态,直到收到客户端的建连请求
2. server发送handshake包,客户端发送用户,密码认证消息包,server端返回OK包,则是认证成功;返回error包表示认证失败,即建立连接失败
可通过抓包分析建连过程
断开连接
mysql协议
1. 客户端->服务器端
只有一种消息包,结构如下:
消息包中数据的长度,包括命令类型 (3个字节) | 序列号 (1个字节) | 命令类型 (1个字节) | 包的内容 |
消息包最大的长度是0xffffff(16M - 1),所以消息包总长度最大为16M+3
2. 服务器端->客户端
有3中数据包
a. ok包
包括命令类型 (3个字节) | 序列号 (1个字节) | 命令类型0x00 (1个字节) |
b. error包
消息包中数据的长度,包括命令类型 (3个字节) | 序列号 (1个字节) | 命令类型0xff (1个字节) | 错误码 (2个字节) | 状态 (6个字节) | 错误信息 |
c. 结果集包
1. 字段的长度
eof包
2. 字段信息
eof包
3. 结果信息
1、删除表的索引
alter table tt drop index inx_name 等价于
alter table tt drop key inx_name
2、表重新命名
alter table t_xxx rename tt;
3