MySQL クライアントとサーバー間の暗号化されていない接続では、ネットワークへのアクセス権を持つユーザーがすべてのトラフィックを監視し、クライアントとサーバー間で送受信されるデータを検査できます。
セキュアな方法でネットワーク経由で情報を移動する必要がある場合、暗号化されていない接続は受け入れられません。 あらゆる種類のデータを読み取れないようにするには、暗号化を使用します。 暗号化されたメッセージの順序を変更したり、データを 2 回再生したりするなどの、多くの種類の既知の攻撃に対抗するために、暗号化アルゴリズムには、セキュリティー要素を含める必要があります。
MySQL では、TLS (トランスポート層セキュリティ) プロトコルを使用したクライアントとサーバー間の暗号化された接続をサポートしています。 TLS は SSL (Secure Sockets Layer) と呼ばれることもありますが、暗号化が弱いため、MySQL は実際には暗号化された接続に SSL プロトコルを使用しません (セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照)。
TLS は暗号化アルゴリズムを使用して、パブリックネットワーク経由で受信したデータを確実に信頼できるようにします。 データの変更、損失またはリプレイを検出するメカニズムがあります。 TLS には、X.509 標準を使用したアイデンティティ検証を提供するアルゴリズムも組み込まれています。
X.509 インターネット上のユーザーを識別できるようにします。 基本的な用語には、必要とするすべてのユーザーに電子証明書を割り当てる「認証局」 (CA) と呼ばれるエンティティーがいくつか存在するはずです。 証明書は、2 つの暗号化鍵 (公開鍵と秘密鍵) を持つ非対称の暗号化アルゴリズムに依存しています。 証明書の所有者は、別のパーティにアイデンティティ証明として証明書を提示できます。 証明書は、所有者の公開鍵で構成されます。 この公開キーを使用して暗号化されたデータは、証明書の所有者によって保持されている対応する秘密キーを使用してのみ復号化できます。
MySQL での暗号化された接続のサポートは、OpenSSL を使用して提供されます。 OpenSSL でサポートされている暗号化プロトコルおよび暗号の詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照してください。
MySQL 8.0.11 から 8.0.17 に、OpenSSL のかわりに wolfSSL を使用して MySQL をコンパイルできました。 MySQL 8.0.18 では、wolfSSL のサポートは削除され、すべての MySQL ビルドで OpenSSL が使用されます。
デフォルトでは、サーバーが暗号化された接続をサポートしている場合、MySQL プログラムは暗号化を使用して接続を試み、暗号化された接続を確立できない場合は暗号化されていない接続にフォールバックします。 暗号化された接続の使用に影響するオプションの詳細は、セクション6.3.1「暗号化接続を使用するための MySQL の構成」 および 暗号化接続のコマンドオプション を参照してください。
MySQL は接続ごとに暗号化を実行し、特定のユーザーの暗号化の使用はオプションまたは必須にできます。 これにより、個々のアプリケーションの要件に従って、暗号化された接続または暗号化されていない接続を選択できます。 暗号化された接続の使用をユーザーに要求する方法の詳細は、セクション13.7.1.3「CREATE USER ステートメント」 の CREATE USER
ステートメントの REQUIRE
句に関する説明を参照してください。 セクション5.1.8「サーバーシステム変数」 の require_secure_transport
システム変数の説明も参照してください
暗号化された接続は、ソースサーバーとレプリカサーバー間で使用できます。 セクション17.3.1「暗号化接続を使用するためのレプリケーションの設定」を参照してください。
MySQL C API からの暗号化された接続の使用の詳細は、Support for Encrypted Connections を参照してください。
SSH 接続内から MySQL サーバーホストに暗号化を使用して接続することもできます。 例については、セクション6.3.4「SSH を使用した Windows から MySQL へのリモート接続」を参照してください。