MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  接続トランスポートプロトコル

4.2.7 接続トランスポートプロトコル

MySQL クライアントライブラリを使用するプログラム (mysqlmysqldump など) の場合、MySQL は複数のトランスポートプロトコルに基づいたサーバーへの接続をサポート: TCP/IP、Unix ソケットファイル、名前付きパイプおよび共有メモリー。 このセクションでは、これらのプロトコルを選択する方法と、それらがどのように類似していて異なるかについて説明します。

トランスポートプロトコルの選択

特定の接続では、トランスポートプロトコルが明示的に指定されていない場合、暗黙的に決定されます。 たとえば、localhost に接続すると、Unix および Unix に似たシステムでソケットファイル接続が行われ、それ以外の場合は 127.0.0.1 への TCP/IP 接続が行われます。 追加情報については セクション4.2.4「コマンドオプションを使用した MySQL Server への接続」を参照してください。

プロトコルを明示的に指定するには、--protocol コマンドオプションを使用します。 次のテーブルに、--protocol に許可される値を示し、各値に適用可能なプラットフォームを示します。 値では大文字と小文字は区別されません。

--protocol の値 使用されるトランスポートプロトコル 適用可能なプラットフォーム
TCP TCP/IP すべて
SOCKET Unix ソケットファイル Unix および Unix に似たシステム
PIPE 名前付きパイプ Windows
MEMORY 共有メモリー Windows

ローカル接続およびリモート接続のトランスポートサポート

TCP/IP トランスポートでは、ローカルまたはリモートの MySQL サーバーへの接続がサポートされます。

ソケットファイル、名前付きパイプおよび共有メモリートランスポートでは、ローカル MySQL サーバーへの接続のみがサポートされます。 (名前付きパイプトランスポートではリモート接続は可能ですが、この機能は MySQL に実装されていません。)

localhost の解釈

トランスポートプロトコルを明示的に指定しない場合、localhost は次のように解釈されます:

  • Unix および Unix に似たシステムでは、localhost に接続するとソケットファイル接続が行われます。

  • それ以外の場合、localhost に接続すると、127.0.0.1 への TCP/IP 接続になります。

トランスポートプロトコルが明示的に指定されている場合、localhost はそのプロトコルに関して解釈されます。 たとえば、--protocol=TCP では、localhost に接続すると、すべてのプラットフォームの 127.0.0.1 に TCP/IP 接続されます。

暗号化とセキュリティの特性

TCP/IP およびソケットファイルトランスポートは、暗号化接続のコマンドオプション で説明されているオプションを使用して TLS/SSL 暗号化の対象となります。 名前付きパイプおよび共有メモリートランスポートは TLS/SSL 暗号化の対象になりません。

デフォルトで保護されているトランスポートプロトコルを介して行われた場合、接続はデフォルトで保護されます。 それ以外の場合、TLS/SSL 暗号化の対象となるプロトコルでは、暗号化を使用して接続をセキュアにすることができます:

  • TCP/IP 接続はデフォルトではセキュアではありませんが、セキュアにするために暗号化できます。

  • ソケットファイル接続はデフォルトでセキュアです。 暗号化することもできますが、ソケットファイル接続を暗号化するとセキュアでなくなり、CPU 負荷が増加します。

  • 名前付きパイプ接続はデフォルトではセキュアではなく、セキュアにするために暗号化の対象にはなりません。 ただし、named_pipe_full_access_group システム変数を使用して、名前付きパイプ接続の使用を許可する MySQL ユーザーを制御できます。

  • 共有メモリー接続はデフォルトでセキュアです。

require_secure_transport システム変数が有効になっている場合、サーバーは何らかの形式のセキュアなトランスポートを使用する接続のみを許可します。 前述の備考に従って、TLS/SSL を使用して暗号化された TCP/IP を使用する接続、ソケットファイルまたは共有メモリーはセキュアな接続です。 TLS/SSL および名前付きパイプ接続を使用して暗号化されていない TCP/IP 接続はセキュアではありません。

暗号化された接続の必須としての構成も参照してください。

接続圧縮

すべてのトランスポートプロトコルは、クライアントとサーバー間のトラフィックで圧縮を使用する必要があります。 特定の接続に圧縮と暗号化の両方が使用されている場合、圧縮は暗号化の前に行われます。 詳細は、セクション4.2.8「接続圧縮制御」を参照してください。


関連キーワード:  接続, トランスポート, プログラム, サーバー, プロトコル, 圧縮, テーブル, Unix, コマンド, ソケット