天天看點

【原創】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() 的值将會指出鑒權是否真正成功。