MYSQL是一个开源数据库,它自定义了一套客户端和服务器之间的底层通信协议,默认使用TCP 3306端口通信。
根据MYSQL客户端和服务器的通信协议规范定义,MYSQL通信协议的报文包括建立连接的服务端握手报文、客户端握手应答、客户端执行查询等操作命令报文以及服务端的相应的应答报文。协议文档官网地址如下:
官方在线文档
https://dev.mysql.com/doc/internals/en/client-server-protocol.html MYSQL报文结构如下图所示,其中的payload字段是每一种报文的载荷,每一种报文的载荷编码结构在官方在线文档中有详细说明。

建立连接的握手请求报文包括HandshakeV10和HandsharkV9。命令报文由命令等字段组成,命令字段标识了命令报文类型,命令可选值如下表所示:
| 命令 |
常量名称 |
说明 |
| 0x00 |
COM_SLEEP |
仅服务器内部使用 |
| 0x01 |
COM_QUIT |
客户端关闭连接 |
| 0x02 |
COM_INIT_DB |
修改连接的默认数据库 |
| 0x03 |
COM_QUERY |
请求执行一个查询语句 |
| 0x04 |
COM_FIELD_LIST |
获取表格的所有字段名 |
| 0x05 |
COM_CREATE_DB |
创建数据库 |
| 0x06 |
COM_DROP_DB |
删除数据库 |
| 0x07 |
COM_REFRESH |
执行REFRESH或者FLUSH命令 |
| 0x08 |
COM_SHUTDOWN |
关闭服务器 |
| 0x09 |
COM_STATICTICS |
获取线程信息 |
| 0x0a |
COM_PROCESS_INFO |
获取线程信息 |
| 0x0b |
COM_CONNECT |
仅服务器内部使用 |
| 0x0c |
COM_PROCESS_KILL |
请求中断连接 |
| 0x0d |
COM_DEBUG |
导出调试信息到标准输出 |
| 0x0e |
COM_PING |
检查服务端是否存活 |
| 0x0f |
COM_TIME |
仅服务器内部使用 |
| 0x10 |
COM_DELAYED_INSERT |
仅服务器内部使用 |
| 0x11 |
COM_CHANGE_USER |
修改当前连接的用户 |
| 0x12 |
COM_BINGLOG_DUMP |
导出BINLOG |
| 0x13 |
COM_TABLE_DUMP |
导出表 |
| 0x14 |
COM_CONNECT_OUT |
仅服务器内部使用 |
| 0x15 |
COM_REGISTER_SLAVE |
注册从节点到主节点 |
| 0x16 |
COM_STMT_PREPARE |
创建预编译语句 |
| 0x17 |
COM_STMT_EXECUTE |
执行预编译语句 |
| 0x18 |
COM_STMT_SEND_LONG_DATA |
发送预编译列数据 |
| 0x19 |
COM_STMT_CLOSE |
关闭预编译语句 |
| 0x1a |
COM_STMT_RESET |
重置预编译语句的数据 |
| 0x1b |
COM_SET_OPTION |
开启或关闭CLIENT_MULTI_STATEMENTS |
| 0x1c |
COM_STMT_FETCH |
从结果集中取数据 |
| 0x1d |
COM_DAEMON |
仅服务器内部使用 |
| 0x1e |
COM_BINLOG_DUMP_GTID |
请求一个BINLOG网络流 |
| 0x1f |
COM_RESET_CONNECTION |
重置会话状态 |
| 0xef |
Semi-Synchronous |
半同步复制 |
| 0xfb |
LOCAL_INFILE_Request |
加载本地数据文件到服务器 |
应答报文包括OK_Packet、ERR_Packet等通用的应答,以及特定命令的数据应答如HandshakeResponse41、HandshakeResponse320等,如下表所示:
| 类型 |
说明 |
| OK_Packet |
命令执行成功 |
| ERR_Packet |
出现异常 |
| EOF_Packet |
同OK_Packet,MySQL 5.7.5开始取消此报文 |
| HandshakeResponse41 |
客户端握手报文应答(双方支持CLIENT_PROTOCOL_41) |
| HandshakeResponse320 |
客户端握手报文应答(不支持CLIENT_PROTOCOL_41) |
| ColmunDefinition41 |
查询等操作应答(双方支持CLIENT_PROTOCOL_41) |
| ColmunDefinition320 |
查询等操作应答(不支持CLIENT_PROTOCOL_41) |
| COM_STMT_PREPARE_OK |

7906

被折叠的 条评论
为什么被折叠?



