Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


4.2.2 MySQL サーバーへの接続

クライアントプログラムが MySQL サーバーに接続できるためには、サーバーが稼働しているホストの名前および MySQL アカウントのユーザー名とパスワードなどの、適切な接続パラメータを使用する必要があります。各接続パラメータにはデフォルト値がありますが、必要に応じてコマンド行またはオプションファイルでプログラムオプションを指定することによってオーバーライドできます。

次の例は mysql クライアントプログラムを使用しますが、原則は mysqldumpmysqladmin、または mysqlshow など、ほかのクライアントにも適用されます。

次のコマンドは、接続パラメータを明示的に指定せずに mysql を呼び出します。

shell> mysql

パラメータオプションがないため、デフォルト値が適用されます。

  • デフォルトのホスト名は localhost です。Unix では、後述するようにこれには特別な意味があります。

  • デフォルトのユーザー名は、Windows では ODBC、Unix では Unix のログイン名です。

  • -p--password も指定しない場合は、パスワードは送信されません。

  • mysql では、最初のオプションではない引数はデフォルトデータベースの名前とみなされます。そのようなオプションがない場合は、mysql はデフォルトデータベースを選択しません。

パスワードのほか、ホスト名およびユーザー名を明示的に指定するには、コマンド行で適切なオプションを指定します。

shell> mysql --host=localhost --user=myname --password=mypass mydb
shell> mysql -h localhost -u myname -pmypass mydb

パスワードオプションについては、パスワード値はオプションです。

  • -p または --password オプションを使用してパスワード値を指定する場合、-p または --password とそれに続くパスワードとの間にスペースがあってはいけません

  • -p または --password オプションを使用するがパスワード値を指定しない場合、パスワードを入力するようクライアントプログラムが要求します。パスワードは入力時に表示されません。これは、コマンド行でパスワードを提供するよりもセキュアです。システム上のほかのユーザーが ps auxw などのコマンドを実行して、コマンド行で指定されたパスワードを見ることができる場合があります。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。

今述べたように、コマンド行にパスワード値を含めるのはセキュリティー上のリスクになり得ます。この問題を解決するには、パスワード値を入れずに --password または -p オプションを指定します。

shell> mysql --host=localhost --user=myname --password mydb
shell> mysql -h localhost -u myname -p mydb

パスワードオプションにパスワード値がない場合、クライアントプログラムはプロンプトを出力して、ユーザーがパスワードを入力するのを待機します。(これらの例では、mydb はその前のパスワードオプションとスペースで区切られているため、パスワードとは解釈されません。)

システムによっては、MySQL がパスワードを要求するために使用するライブラリルーチンが、自動的にパスワードを 8 文字に制限します。これはシステムライブラリの問題であり、MySQL の問題ではありません。内部的には、MySQL にはパスワードの長さに関する制限はありません。この問題を回避するには、MySQL のパスワードを 8 文字以下の値に変更するか、またはオプションファイルにパスワードを指定します。

Unix では、MySQL プログラムはホスト名 localhost を、ほかのネットワークベースのプログラムと比較して想定されるのとはおそらく異なる、特別な方法で扱います。localhost への接続で、MySQL プログラムは Unix ソケットファイルを使用してローカルサーバーに接続しようとします。これは、ポート番号を指定するために --port または -P オプションが与えられた場合にも生じます。クライアントがローカルサーバーに TCP/IP 接続を行うことを保証するには、--host または -h を使用して、ホスト名の値 127.0.0.1、またはローカルサーバーの IP アドレスまたは名前を指定します。--protocol=TCP オプションを使用して、localhost に対しても、接続プロトコルを明示的に指定することもできます。例:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

--protocol オプションを使用すると、その他のオプションが通常デフォルトでほかのプロトコルになる場合でも、特定のタイプの接続を確立できます。

サーバーが IPv6 接続を受け付けるように構成されている場合、クライアントは --host=::1 を使用して IPv6 で接続できます。セクション5.1.9「IPv6 サポート」を参照してください。

Windows では、--pipe または --protocol=PIPE オプションを指定するか、または .(ピリオド) をホスト名として指定することによって、MySQL クライアントが名前付けパイプ接続を使用することを強制できます。名前付きパイプ接続が有効にされていない場合は、エラーが発生します。デフォルトのパイプ名を使用しない場合には --socket オプションを使用してパイプ名を指定します。

リモートサーバーへの接続では、常に TCP/IP が使用されます。次のコマンドは、デフォルトのポート番号 (3306) を使用して remote.example.com で動作するサーバーに接続します。

shell> mysql --host=remote.example.com

ポート番号を明示的に指定するには、--port オプションまたは -P オプションを使用します。

shell> mysql --host=remote.example.com --port=13306

ローカルサーバーへの接続にもポート番号を指定できます。ただし前述のように、Unix では localhost への接続にはデフォルトでソケットファイルが使用されます。前述のように TCP/IP 接続を強制しないと、ポート番号を指定するすべてのオプションは無視されます。

次のコマンドでは、Unix ではプログラムはソケットファイルを使用し、--port オプションは無視されます。

shell> mysql --port=13306 --host=localhost

ポート番号を使用するようにするには、プログラムを次のいずれかの方法で呼び出します。

shell> mysql --port=13306 --host=127.0.0.1
shell> mysql --port=13306 --protocol=TCP

次のリストは、クライアントプログラムがサーバーに接続する方法を制御するために使用できるオプションの概要です。

  • --host=host_name, -h host_name

    サーバーが稼働しているホスト。デフォルト値は localhost です。

  • --password[=pass_val], -p[pass_val]

    MySQL アカウントのパスワード。前述のように、パスワード値はオプションですが、指定する場合は -p または --password= とそれに続くパスワードとの間にスペースがあってはいけません。デフォルトではパスワードを送信しません。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。名前付きパイプ接続を可能にするには、サーバーは --enable-named-pipe オプションで起動する必要があります。

  • --port=port_num, -P port_num

    TCP/IP を使用する接続で、接続に使用するポート番号。デフォルトのポート番号は 3306 です。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    このオプションは、サーバーへの接続に使用するプロトコルを明示的に指定します。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。たとえば、Unix では localhost への接続はデフォルトでは Unix ソケットファイルを使用して行われます。

    shell> mysql --host=localhost
    

    代わりに TCP/IP 接続を強制するには、--protocol オプションを指定します。

    shell> mysql --host=localhost --protocol=TCP
    

    次の表は、許可される --protocol オプション値を示し、各値を使用できるプラットフォームを示しています。値は大文字と小文字が区別されません。

    --protocol の値 接続プロトコル 許可されるオペレーティングシステム
    TCP ローカルまたはリモートのサーバーへの TCP/IP 接続 すべて
    SOCKET ローカルサーバーへの Unix ソケットファイル接続 Unix のみ
    PIPE ローカルまたはリモートのサーバーへの名前付きパイプ接続 Windows のみ
    MEMORY ローカルサーバーへの共有メモリー接続 Windows のみ
  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --socket=file_name, -S file_name

    Unix で、名前付きパイプを使用して行われるローカルサーバーへの接続で使用する Unix ソケットファイルの名前。デフォルトの Unix ソケットファイル名は /tmp/mysql.sock です。

    Windows の場合、ローカルサーバーへの接続で、使用する名前付きパイプの名前。デフォルトの Windows パイプ名は MySQL です。パイプ名では大文字と小文字を区別しません。

    名前付きパイプ接続を可能にするには、サーバーは --enable-named-pipe オプションで起動する必要があります。

  • --ssl*

    --ssl で始まるオプションは、サーバーが SSL サポートで構成されている場合には、SSL を使用してサーバーへのセキュアな接続を確立するために使用されます。詳細については、セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    使用する MySQL アカウントのユーザー名。デフォルトのユーザー名は、Windows では ODBC、Unix では Unix のログイン名です。

クライアントプログラムを呼び出すたびに異なるデフォルト値を入力しなくてもいいように、コマンド行で接続を行うときに、それらを使用するように指定できます。これはいくつかの方法で実行できます。


User Comments
  Posted by Jan Steinman on February 14, 2015
In the discussion above regarding "localhost" on UNIX systems, there is much explanation on how to force that to be a TCP/IP connection instead of a socket, as though that is a desirable thing to do.

A socket connection will always be faster and have less overhead than a TCP/IP connection to 127.0.0.1, and should be the preferred choice in most circumstances.
Sign Up Login You must be logged in to post a comment.