TL;DR
- 日々の覚書: MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける は目を通してもらっている前提
- SSL接続同士、非SSL接続同士では
mysql_native_password
とcaching_sha2_password
の接続コストは数百usくらいしか違わない
- まずは
mysql_native_password
,caching_sha2_password
,sha256_password
それぞれを指定したアカウントを作ります。
CREATE USER yoku0825_native_password IDENTIFIED WITH mysql_native_password BY 'a';
CREATE USER yoku0825_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'a';
CREATE USER yoku0825_sha256 IDENTIFIED WITH sha256_password BY 'a';
- 別のマシンから1000回接続してquitするのにかかった時間の平均値を出します。それを5回繰り返して最大値と最小値を捨て、残った3回分の平均を取ります。
$ for n in $(seq 1 5) ; do time for m in $(seq 1 1000) ; do MYSQL_PWD="a" mysql -h 172.31.32.165 -uyoku0825_native_password -e "quit"; done ; done
接続オプション | mysql_native_password | caching_sha2_password | sha256 |
---|---|---|---|
非SSL | 7.8ms | 7.5ms | x |
SSL | 34.8ms | 35.0ms | 38.1ms |
非SSL + サーバーの公開鍵 | 7.6ms | 7.4ms | 11.2ms |
- 非SSL
mysql --ssl-mode=DISABLE
- SSL
mysql --ssl-mode=REQUIRED
- 非SSL + サーバーの公開鍵
mysql --ssl-mode=DISABLE --get-server-public-key
- 日々の覚書: MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける のコメントで教えてもらった
値はそこまでアテにしないとして、傾向としては
mysql_native_password
とcaching_sha2_password
はそこまで大きな違いはない(個人によって感想は異なります)- やはり暗号化しないと速い
- 非SSLで
sha256_password
を使うとかなりオーバーヘッドが見える
リモートから公開鍵を指定する
MYSQL_SERVER_PUBLIC_KEY
は少なくともMySQL 8.0のConnector/Cには mysql_options に実装されてるけど、それ以外のコネクターでは使えるのかどうかわからない。と考えると、平文の速さが欲しければ
mysql_native_password
が安牌、SSLに切り替えるよって場合は caching_sha2_password
でいいやってことになるかしらん。【2018/11/14 15:22】
ご指摘をいただいたので追試。 @methane = サンありがとうございます。
結果への影響は小さいとは思いますが、 mysql_native_password と caching_sha2_password の速度比較をする場合、 サーバー側も default-authentication-plugin を設定しないと不公平だと思います。 AuthSwitchRequest の1往復分がまるまる変わるので。
— INADA Naoki (@methane) 2018年11月12日
(
mysqld
はグリーティングの時に default_authentication_plugin
のつもりでソルトを送り、そのプラグインを使っていないユーザーを指定された場合はそのプラグイン用のソルトを送りなおす = AuthSwitchRequest の1往復分
)以下、全てSSLの場合。
caching_sha2 & default: caching_sha2 -> 34.6646666666667
caching_sha2 & default: native -> 35.148
native & default: caching_sha2 ->35.1036666666667
native & default: native -> 35.0216666666667