caching_sha2_password が使用されている場合、MySQL 8 に安全に接続するにはどうすればよいですか?

caching_sha2_password が使用されている場合、MySQL 8 に安全に接続するにはどうすればよいですか?

私たちの Web サイトから新しいホストに移行しています。現在、データベース クラスター (PCS) では MySQL 8 が稼働しています。MySQL に接続するフローティング仮想 IP を持つ 2 つのデータベース サーバー (アクティブとフェイルオーバー) があります。

また、クラスターから別のサーバーへのレプリケーションも実行しています (バイナリ ログを使用)。自己署名 CA と証明書を使用した SSL の使用を含め、MySQL 5.x を使用したときと同じ方法でレプリケーションを設定しました。

証明書が作成されたら、マスターで次の構成を使用します。

ssl
ssl-ca=/var/lib/mysql/ssl/ca.pem
ssl-cert=/var/lib/mysql/ssl/server-cert.pem
ssl-key=/var/lib/mysql/ssl/server-key.pem

レプリケーションはスレーブ上で正常に実行されています。ただし、コマンド ライン (アクティブ DB サーバーから) で MySQL クラスターに接続しようとすると、次のエラーが発生します。

ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

caching_sha2_passwordこれについて調べてみると、これが現在デフォルトになっており、ドキュメントには安全な接続が必要であると記載されていることが原因だと思いました。次のことを試しました。

mysql --ssl-mode=DISABLED

それでも何も変わりませんでした。ユーザーも変更してみました:

mysql> ALTER USER 'root'@'db-01' IDENTIFIED WITH mysql_native_password BY 'passwordhere'

それもうまくいきませんでした。これまでのところ、MySQLにログインできる唯一の方法はSSLを削除することですできる次のように接続します:

mysql --get-server-public-key

ただし、これが最善の解決策であるかどうかはわかりません。

このように SSL を使用する場合、MySQL 8 で接続が適切に機能するようにする最善の方法は何ですか? クラスターを構成する DB サーバー、同じ内部ネットワーク上の Web サーバー、および外部 (レプリケーションやリモート DB 管理など) の両方から多数のアカウントが存在します。

答え1

これを解決できたかどうか気になっています。私も同じ、または似たような問題に遭遇しています。これが私の Reddit スレッドです: https://www.reddit.com/r/mysql/comments/10pa60k/group_replication_and_ssl_configuring_issues/

何かご提案があれば嬉しいです。よろしくお願いします。DD

答え2

永遠にこの問題に悩まされた後、ようやく自分に合った設定を見つけました。人によって感じ方は異なるかもしれません。

私がしなければならなかったのは、mysql設定ファイルに次の行を追加し、残りのグループレプリケーション設定を追加することだけでした。

group_replication_recovery_get_public_key           = on

私の知る限り、どこにも文書化されていません。何か役に立つものが見つかることを期待して、mysql 変数を調べていたときに偶然見つけました。

関連情報