mysql_config_editor ユーティリティー (MySQL 5.6.6 で使用可能です) を使用すると、.mylogin.cnf
という名前の暗号化されたログインファイルに認証情報を保存できます。ファイルの場所は、Windows では %APPDATA%\MySQL
ディレクトリ、非 Windows システムでは現在のユーザーのホームディレクトリです。このファイルは、MySQL Server に接続するための認証情報を取得するために、MySQL クライアントプログラムによってあとで読み取ることができます。
別のファイル名を指定するには、MYSQL_TEST_LOGIN_FILE
環境変数を設定します。この変数は mysql-test-run.pl テストユーティリティーが使用しますが、mysql_config_editor
および mysql、mysqladmin、などの MySQL クライアントによっても認識されます。
mysql_config_editor は .mylogin.cnf
ファイルを暗号化するため平文として読み取ることはできず、クライアントプログラムによって復号化された場合、その内容はメモリー内でのみ使用されます。これにより、パスワードを平文ではない形式のファイルに保存して、コマンド行または環境変数にさらされる必要もまったくなく、あとで使用できます。mysql_config_editor は、ユーザーがファイルの内容を表示できるようにする print
コマンドを提供しますが、この場合でもパスワード値はマスクされるため、ほかのユーザーが見られるような方法では決して表示されません。
mysql_config_editor が使用する暗号化は、パスワードが .mylogin.cnf
に平文として現れることを防ぎ、パスワードが意図せずにさらされることを防ぐセキュリティー手段を提供します。たとえば、通常の暗号化されていない my.cnf
オプションファイルを画面に表示すると、そこに含まれるパスワードはだれでも見ることができます。.mylogin.cnf
では、そうではありません。しかし、使用される暗号化は、強力な攻撃者を阻止することはなく、解読されることがないとは考えないようにしてください。マシン上であなたのファイルにアクセスするためにシステム管理者権限を取得できるユーザーなら、少しの作業で .mylogin.cnf
ファイルを復号化できます。
ログインファイルは現在のユーザーが読み取りおよび書き込み可能で、ほかのユーザーからはアクセス不能でなければなりません。そうでないと、mysql_config_editor はそれを無視し、ファイルはクライアントプログラムでも使用されません。Windows では、この制約は適用されません。代わりに、ユーザーは %APPDATA%\MySQL
ディレクトリにアクセスできなければなりません。
暗号化されていない形式の .mylogin.cnf
ログインファイルは、ほかのオプションファイルと同様にオプショングループで構成されます。.mylogin.cnf
内の各オプショングループは「ログインパス」と呼ばれ、host
、user
、および password
という限定されたオプションのセットのみを許可するグループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。次に例を示します。
[myloginpath]
user = myname
password = mypass
host = 127.0.0.1
サーバーに接続するためにクライアントプログラムを起動すると、ほかのオプションファイルとともに .mylogin.cnf
が使用されます。その優先順位はほかのオプションファイルより高くなりますが、クライアントのコマンド行で明示的に指定されたオプションよりは低くなります。オプションファイルが使用される順序の詳細は、セクション4.2.6「オプションファイルの使用」を参照してください。
mysql_config_editor
は次のように起動します。
shell> mysql_config_editor [program_options] command [command_options]
program_options
は一般的な mysql_config_editor オプションで構成されます。command
は実行するコマンドを示し、command_options
はコマンドが必要とする追加のオプションを示します。
コマンドは、.mylogin.cnf
login ファイルに対して実行するアクションを示します。たとえば、set
はログインパスをファイルに書き出し、remove
はログインパスを削除し、print
はログインパスの内容を表示します。オプションが指定された場合は、ログインパス名およびログインパスで使用する値など、コマンドに対して情報を提供します。
プログラム引数のセット内でのコマンド名の位置は重要です。たとえば、次のコマンド行は同じ引数を持ちますが、結果は異なります。
mysql_config_editor --help set
mysql_config_editor set --help
最初のコマンド行は一般的な mysql_config_editor ヘルプを表示し、set
コマンドは無視されます。2 番目のコマンド行は set
コマンドのヘルプを表示します。
ローカル MySQL サーバーおよびホスト remote.example.com
に接続するためにlocal
および remote
という名前の 2 つのログインパスを確立するとします。ローカルサーバーには localuser
および localpass
というユーザー名とパスワードで認証を行い、リモートサーバーには remoteuser
および remotepass
というユーザー名とパスワードで認証を実行します。.mylogin.cnf
ファイルにログインパスを設定するには、次の set
コマンドを使用します。コマンドは 1 行に 1 つずつ入力し、次に要求されたら適切なパスワードを入力します。
shell> mysql_config_editor set --login-path=local
--host=localhost --user=localuser --password
Enter password: enter password "localpass" here
shell> mysql_config_editor set --login-path=remote
--host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here
mysql_config_editor が .mylogin.cnf
ファイルに書き出す内容を表示するには、print
コマンドを使用します。
shell> mysql_config_editor print --all
[local]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com
print
コマンドは、各ログインパスを行のセットとして表示します。各セットには最初にグループヘッダー (角かっこ内にログインパス名を示します) があり、ログインパスのオプション値がそれに続きます。パスワード値はマスクされ、平文としては表示されません。
前の例に示されるように、.mylogin.cnf
ファイルには複数のログインパスを含めることができます。これにより、mysql_config_editor で、異なる MySQL サーバーに接続するために複数の「人物」を設定するのが容易になります。これらはすべて、あとでクライアントプログラムを起動するときに --login-path
オプションを使用して名前で選択できます。たとえば、ローカルサーバーに接続するには次のコマンドを使用します。
shell> mysql --login-path=local
リモートサーバーに接続するには次のコマンドを使用します。
shell> mysql --login-path=remote
set
コマンドを mysql_config_editor で使用してログインパスを作成する場合、可能な 3 つのオプション値 (ホスト名、ユーザー名、およびパスワード) をすべて指定する必要はありません。指定した値のみがパスに書き出されます。欠落している値があとで必要になった場合は、クライアントパスを起動して MySQL サーバーに接続するときに、オプションファイルまたはコマンド行で指定できます。また、コマンド行で指定されたオプションは、.mylogin.cnf
ファイルを含めたオプションファイルのオプションをオーバーライドします。たとえば、remote
ログインパスの認証情報がホスト remote2.example.com
にも適用される場合、そのホストのサーバーに次のように接続できます。
shell> mysql --login-path=remote --host=remote2.example.com
.mylogin.cnf
ファイルが存在する場合は、--no-defaults
オプションが使用された場合でも、必ず読み取られます。これにより、--no-defaults
が存在する場合でも、コマンド行よりも安全な方法でパスワードを指定できます。
mysql_config_editor のコマンド
このセクションでは、許可される mysql_config_editor コマンド、およびコマンド固有の意味を持つオプションの解釈について説明します。また、mysql_config_editor は、mysql_config_editor の実行中により多くの情報を生成するための --verbose
のように、任意のコマンドに使用できるその他のオプションも取ります。このオプションは、操作が期待する効果を生じない場合に、問題を診断するのに役立ちます。サポートされるオプションのリストは、mysql_config_editor のオプションを参照してください。
mysql_config_editor は次のコマンドをサポートします。
-
help
ヘルプメッセージを表示して終了します。
-
print [
options
].mylogin.cnf
の内容を暗号化されていない形式で出力します。パスワードは*****
として表示されます。print
コマンドは次のオプションを取ります。-
--all
すべてのログインパスを出力します。
-
--login-path=
name
指名されたログインパスを出力します。
ログインパスが指定されていない場合のデフォルトパス名は
client
です。--all
および--login-path
の両方が指定されている場合、--all
が優先されます。 -
-
remove [
options
]ログインパスを
.mylogin.cnf
ファイルから削除します。remove
コマンドは次のオプションを取ります。-
--host
ホスト名をログインパスから削除します。
-
--login-path=
name
削除するログインパス。このオプションが指定されていない場合のデフォルトパス名は
client
です。 -
--password
パスワードをログインパスから削除します。
-
--port
TCP/IP ポート番号をログインパスから削除します。
-
--socket
Unix ソケットファイル名をログインパスから削除します。
-
--user
ユーザー名をログインパスから削除します。
remove
コマンドに対する--host
、--user
、および--password
オプションは、MySQL 5.6.9 でサポートされます。remove
コマンドに対する--port
および--socket
オプションは、MySQL 5.6.11 でサポートされます。remove
コマンドは、--host
、--password
、--port
、--socket
、および--user
の各オプションで指定された値のみをログインパスから削除します。これらがどれも指定されていない場合、remove
はログインパス全体を削除します。たとえば次のコマンドは、client
ログインパス全体ではなく、client
ログインパスからuser
の値のみを削除します。mysql_config_editor remove --login-path=client --user
-
-
reset
.mylogin.cnf
ファイルの内容を空にします。ファイルが存在しない場合は作成されます。 -
set [
options
]ログインパスを
.mylogin.cnf
ファイルに書き出します。set
コマンドは次のオプションを取ります。-
--host=
host_name
ログインパスに書き出すホスト名。
-
--login-path=
name
作成するログインパス。このオプションが指定されていない場合のデフォルトパス名は
client
です。 -
--password
ログインパスに書き出すパスワードを要求します。
-
--port=
port_num
ログインパスに書き出す TCP/IP ポート番号。
-
--socket=
file_name
ログインパスに書き出す Unix ソケットファイル名。
-
--user=
user_name
ログインパスに書き出すユーザー名。
set
コマンドに対する--port
および--socket
オプションは、MySQL 5.6.11 でサポートされます。set
コマンドは、--host
、--password
、--port
、--socket
、および--user
の各オプションで指定された値のみをログインパスに書き出します。これらのオプションがいずれも指定されない場合は、mysql_config_editor はログインパスを空のグループとして書き出します。空のパスワードを指定するには、
set
コマンドを--password
オプションとともに使用し、次にパスワードプロンプトで Enter を押します。その結果.mylogin.cnf
に書き出されるログインパスは、次のような行を含みます。password =
.mylogin.cnf
にログインパスがすでに存在する場合は、set
コマンドはそれを置換します。これがユーザーが意図したものであることを確認するために、mysql_config_editor は警告を出力して確認を要求します。警告とプロンプトを抑制するには、--skip-warn
オプションを使用します。 -
mysql_config_editor のオプション
mysql_config_editor は次のオプションをサポートします。
表 4.13 mysql_config_editor のオプション
オプション名 | 説明 | 導入 |
---|---|---|
--all | すべてのログインパスを出力 | |
--debug | デバッグのログを書き込み | |
--help | ヘルプメッセージを表示して終了 | |
--host | ログインファイルを書き出すホスト | |
--login-path | ログインパス名 | |
--password | ログインファイルに書き出すパスワードを要求 | |
--port | ログインファイルに書き出す TCP/IP ポート番号 | 5.6.11 |
--socket | ログインファイルに書き出す Unix ソケットファイル名 | 5.6.11 |
--user | ログインファイルを書き出すユーザー名 | |
--verbose | 冗長モード | |
--version | バージョン情報を表示して終了 | |
--warn | ログインパスの上書きについて警告し、確認を要求 |
-
ヘルプメッセージを表示して終了します。
set
またはremove
などのコマンド名が前にある場合は、そのコマンドに関する情報を表示します。 -
print
コマンドに対して、ログインファイル内のすべてのログインパスを出力します。 -
--debug[=
,debug_options
]-#
debug_options
デバッグのログを書き込みます。一般的な
debug_options
文字列はd:t:o,
です。デフォルトはfile_name
d:t:o
です。 -
--host=
,host_name
-h
host_name
set
コマンドに対しては、ログインパスに書き出すホスト名。remove
コマンドに対しては、ログインパスからホスト名を削除します。 -
print
、remove
、およびset
コマンドに対して、.mylogin.cnf
ログインファイル内で使用するログインパス。ユーザーが MySQL サーバーへの接続に使用するログインパスを指定できるように、クライアントプログラムも
--login-path
オプションをサポートします。クライアントプログラムでは、--login-path
は指定する最初のオプションでなければなりません。これは mysql_config_editor には該当しません。セクション4.2.7「オプションファイルの処理に影響するコマンド行オプション」を参照してください。 -
set
コマンドに対して、mysql_config_editor がパスワードを要求し、ユーザーが入力した値をログインパスに書き出すようになります。mysql_config_editor が起動してプロンプトを表示したあと、ユーザーはパスワードを入力して Enter を押すようにしてください。ほかのユーザーがパスワードを見るのを防ぐため、mysql_config_editor はエコーしません。このオプションでは、オプション名のあとにパスワード値を指定することはできません。つまり mysql_config_editor では、ほかのユーザーに見られる可能性のあるコマンド行にパスワードを入力することは決してありません。これは、ほかのほとんどの MySQL プログラムとは異なります。ほかのプログラムでは
--password=
またはpass_val
-p
としてコマンド行でパスワードを指定できます。(ただし、この方法はセキュアではなく、避けるべきです。)pass_val
remove
コマンドに対しては、ログインパスからパスワードを削除します。 -
set
コマンドに対しては、ログインパスに書き出す TCP/IP ポート番号。remove
コマンドに対しては、ログインパスからポート番号を削除します。 -
--socket=
,file_name
-S
file_name
set
コマンドに対しては、ログインパスに書き出す Unix ソケットファイル名。remove
コマンドに対しては、ログインパスからソケットファイルを削除します。 -
--user=
,user_name
-u
user_name
set
コマンドに対しては、ログインパスに書き出すユーザー名。remove
コマンドに対しては、ログインパスからユーザー名を削除します。 -
冗長モード。プログラムの動作についてより多くの情報を出力します。
-
バージョン情報を表示して終了します。
-
set
コマンドに対して、コマンドが既存のログインパスを上書きしようとする場合に、ユーザーに警告して確認を求めます。このオプションはデフォルトで有効です。無効にするには、--skip-warn
を使用します。