MySQL の caching_sha2_password 認証に対応する
Description
Checklists
Attachments
- 02 Aug 2024, 03:47 PM
Activity
Kenichi IshigakiNovember 27, 2024 at 5:19 AM
@Reiko Sato @Taku Amano ありがとうございます。マージしました。
Reiko SatoNovember 27, 2024 at 4:20 AM
@Kenichi Ishigaki
NONE+上記の3つの設定で2バージョンとも起動できました。
Taku AmanoNovember 27, 2024 at 3:50 AM
うーんなんだろう、大丈夫そうですけどね。
mt-dev の挙動の特徴として、うっかり間違えそうなところとしては、以下のような点があります。
mt.cgi への接続 : mt-config.cgi を変更して反映させる場合には、再度
vagrant mt-dev ...
から起動し直す必要があるダイナミックパブリッシング : mt-config.cgi を変更するとすぐに反映される
あと mt-config.cgi の内容としては、例えばNONEでも「DBIConnectOptions mysql_ssl_client_cert だけをコメントアウトした」状態では接続できなくなります。パターンとしては以下のようなものがあります。
全く未設定 : mysql8とか、古い環境ならこれ
SSLだけど証明書の検証はなし: NONE か SSL 用
DBIConnectOptions mysql_ssl=1
DBIConnectOptions mysql_ssl_verify_server_cert=0
SSLで、証明書の検証はあり : これも NONE か SSL 用
DBIConnectOptions mysql_ssl=1
DBIConnectOptions mysql_ssl_verify_server_cert=1
DBIConnectOptions mysql_ssl_ca_file=/mt-dev/ssl/certs/ca-cert.pem
クライアントの証明書を使う : これは X509用。ただし、NONE や SSL でも接続は可能
DBIConnectOptions mysql_ssl=1
DBIConnectOptions mysql_ssl_verify_server_cert=1
DBIConnectOptions mysql_ssl_client_key=/mt-dev/ssl/certs/client-key.pem
DBIConnectOptions mysql_ssl_client_cert=/mt-dev/ssl/certs/client-cert.pem
DBIConnectOptions mysql_ssl_ca_file=/mt-dev/ssl/certs/ca-cert.pem
@Reiko Sato
一回、以下の設定にして、MTを起動し直して、NONE のときに接続できるか試してもらってもいいでしょうか。
DBIConnectOptions mysql_ssl=1
DBIConnectOptions mysql_ssl_verify_server_cert=1
DBIConnectOptions mysql_ssl_ca_file=/mt-dev/ssl/certs/ca-cert.pem
Kenichi IshigakiNovember 27, 2024 at 2:50 AM
@Reiko Sato
うーん、あとはなんだろう。 docker system prune
とか、 docker image ls
したあとで mysql 9.0 のイメージの ID を見て docker image rm <そのID>
してからもう一度試してみるとか?
@Taku Amano
もし何かお心当たりありましたらフォローおねがいします。
Reiko SatoNovember 27, 2024 at 2:45 AM
@Kenichi Ishigaki vagrant mt-dev exec-mysql MYSQL_COMMAND_ARGS="-e \"ALTER USER 'root'@'%' REQUIRE NONE\""
をしても、configのDBIConnectOptionsがひとつでもコメントアウトされていると接続できませんになります。
NONEの状態なのに、X509に設定している時と同じになっています。
従来利用してきた mysql_native_password 認証が2024/07リリースの MySQL 9.0 で削除になるとのことで、 MySQL 8 で導入された caching_sha2_password でも認証できるようにしておく必要性が高まっている(https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-0.html#mysqld-8-4-0-deprecation-removal によると MySQL 8.4 でも mysql_native_password がデフォルト無効になっている)。
とのことなので、MySQL と SSL 接続するためのオプションや公開鍵を渡しやすくするためのオプションなどを用意しておく必要がありそう。
cf. https://dev.mysql.com/doc/refman/9.0/en/caching-sha2-pluggable-authentication.html
https://dev.mysql.com/doc/refman/9.0/en/encrypted-connections.html