認証がプラグイン化された最近のMySQL(5.5くらい?)の認証時のプロトコルをちゃんと理解してなかったので調べてみた。
基本的にはこんな感じ
クライアントが接続するとサーバー(mysqld)から次の内容のパケットが送られる:
- プロトコルバージョン: 現在のところ "10"
- サーバーバージョン: "8.0.27" とか
- スレッドID
- パスワードハッシュ化のためのデータ(チャレンジ)
- サーバーの機能(ケイパビリティ)
- サーバーのデフォルト文字コード(collation)
-
認証方式:
caching_sha2_passwordとか
それの応答としてクライアントが次のパケットを送る:
- クライアントフラグ …