天天看点

【原创】MySQL Proxy - read_auth_result()

       在鉴权阶段由服务器返回的包可以通过 read_auth_result() 函数进行捕获分析。该函数的唯一参数是由服务器返回的鉴权包的本身。由于该包是一个裸 mysql 网络协议包,你必须通过检查包的首字节来确认包的类型及其对应的内容。可以使用常量 mysqld_packet_err 和 mysqld_packet_ok 来标示当前鉴权是否成功: 

       如果一个允许使用 long-password 的客户端尝试向支持 long-password 的服务器进行鉴权,但是实际提供的用户密码确是 short 的,read_auth_result() 函数将会被调用两次。第一次,auth.packet:byte() 的值将会等于 254 ,表明客户端应该使用老版本的密码协议再尝试一次。第二次调用 read_auth_result() 函数时,auth.packet:byte() 的值将会指出鉴权是否真正成功。