14.2.1 初始握手
初始握手从服务器发送 Initial_Handshake_Packet开始。在这之后,客户端可以选择是否通过SSL_Connection_Request_Packet发送SSL连接请求,
然后客户端发送Handshake_Response_Packet.
14.2.1.3能力协商
为了允许低版本的客户端连到高版本的服务器,初始握手包包含:
.MySQL服务器版本
.服务器能力(14.2.6 Capability Flags)
客户端应该只在Handshake_Response_Packet中声明和服务器一样的能力。
客户端和服务器能够在以下方面达成一致:
.status flags的使用
.error-codes使用的SQL states
.认证方法
.SSL支持
.压缩
14.2.1.4确定认证方法
用于认证的方法被绑定到用户账户,存在mysql.user表的plugin列。客户端在Handshake_Response_Packet包里标注它想要使用的登录账户。直到这个时候服务器才会
查询mysql.user表找出要用的认证方法。
然而,为了节省一些客户端和服务器之间消息的往返开销,服务器和客户端在初始握手包中已经开始了认证方法交流,使用的方法是对将要使用的认证方法的乐观猜测。
服务器使用它的默认认证方法产生初始认证数据负载(payload)然后在Initial_Handshake_Packet包中将使用的认证方法名一起发送给客户端。
客户端在Handshake_Response_Packet中回复的时候带上对服务器发送的认证数据的回复。