MySQL Server は、TCP/IP 接続について単一ネットワークソケットを listen します。このソケットは単一アドレスにバインドされますが、あるアドレスを複数のネットワークインタフェースにマップできます。アドレスを指定するには、サーバー起動時に --bind-address=
オプションを使用します。ここで、addr
addr
は IPv4 または IPv6 アドレスあるいはホスト名です。(IPv6 アドレスは MySQL 5.5.3 より前ではサポートされません。)addr
がホスト名の場合、サーバーはこの名前を IP アドレスに解決し、そのアドレスにバインドします。
サーバーはさまざまなタイプのアドレスを次のように処理します。
アドレスが
*
の場合、サーバーホストが IPv6 アドレスをサポートする場合はすべてのサーバーホストの IPv6 および IPv4 インタフェース上の TCP/IP 接続を受け入れ、そうでない場合はすべての IPv4 アドレスの TCP/IP 接続を受け入れます。すべてのサーバーインタフェース上の IPv4 および IPv6 の両方の接続を許可するには、このアドレスを使用します。この値は、MySQL 5.6.6 以降で許可されています (またデフォルトです)。アドレスが
0.0.0.0
の場合、サーバーはすべてのサーバーホスト IPv4 インタフェース上の TCP/IP 接続を受け入れます。これは MySQL 5.6.6 以前のデフォルトです。アドレスが
::
の場合、サーバーはすべてのサーバーホスト IPv4 および IPv6 インタフェース上の TCP/IP 接続を受け入れます。すべてのサーバーインタフェース上の IPv4 および IPv6 の両方の接続を許可するには、このアドレスを使用します。アドレスが IPv4 にマップ済みのアドレスの場合、サーバーは IPv4 または IPv6 のいずれかの形式で、そのアドレスの TCP/IP 接続を受け入れます。たとえば、サーバーが
::ffff:127.0.0.1
にバインドされている場合、クライアントは--host=127.0.0.1
または--host=::ffff:127.0.0.1
のいずれかを使用して接続できます。アドレスが「通常の」 IPv4 または IPv6 アドレスの場合 (
127.0.0.1
や::1
など)、サーバーはその IPv4 または IPv6 アドレスについてのみ TCP/IP 接続を受け入れます。
サーバーを特定のアドレスにバインドする予定の場合、そのアドレスに接続するために使用できる管理者権限を持つアカウントが mysql.user
付与テーブルに含まれていることを確認します。そうでない場合、サーバーをシャットダウンできません。たとえば、サーバーを *
にバインドしている場合、すべての既存のアカウントを使用して接続できます。ただし、サーバーを ::1
にバインドしている場合、そのアドレスの接続のみ受け入れます。この場合、'root'@'::1'
アカウントが mysql.user
テーブルに存在することをまず確認して、サーバーに接続してシャットダウンできることをたしかめます。