クライアントプログラムが MySQL サーバーに接続できるためには、サーバーが稼働しているホストの名前および MySQL アカウントのユーザー名とパスワードなどの、適切な接続パラメータを使用する必要があります。各接続パラメータにはデフォルト値がありますが、必要に応じてコマンド行またはオプションファイルでプログラムオプションを指定することによってオーバーライドできます。
次の例は mysql クライアントプログラムを使用しますが、原則は mysqldump、mysqladmin、または 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=
とそれに続くパスワードとの間にスペースがあってはいけません。デフォルトではパスワードを送信しません。 -
Windows で、名前付きパイプを使用してサーバーに接続します。名前付きパイプ接続を可能にするには、サーバーは
--enable-named-pipe
オプションで起動する必要があります。 -
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 を使用してサーバーへのセキュアな接続を確立するために使用されます。詳細については、セクション6.3.10.4「SSL コマンドのオプション」を参照してください。 -
--user=
,user_name
-u
user_name
使用する MySQL アカウントのユーザー名。デフォルトのユーザー名は、Windows では
ODBC
、Unix では Unix のログイン名です。
クライアントプログラムを呼び出すたびに異なるデフォルト値を入力しなくてもいいように、コマンド行で接続を行うときに、それらを使用するように指定できます。これはいくつかの方法で実行できます。
-
接続パラメータをオプションファイルの
[client]
セクションに指定できます。このファイルの関係セクションは次のようになります。[client] host=host_name user=user_name password=your_pass
セクション4.2.6「オプションファイルの使用」でオプションファイルの詳細を記述しています。
一部の接続パラメータは、環境変数を使用して指定できます。mysql のホストは、
MYSQL_HOST
で指定できます。MySQL ユーザー名は、USER
を使用して指定できます (これは Windows のみです)。パスワードは、MYSQL_PWD
を使用して指定できます (ただし、これはセキュアではありません。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください)。変数の一覧は、セクション2.12「環境変数」を参照してください。