mysql_config_editor ユーティリティでは、.mylogin.cnf
という名前の不明瞭化されたログインパスファイルに認証資格証明を格納できます。 ファイルの場所は、Windows では %APPDATA%\MySQL
ディレクトリ、非 Windows システムでは現在のユーザーのホームディレクトリです。 このファイルは、MySQL Server に接続するための認証情報を取得するために、MySQL クライアントプログラムによってあとで読み取ることができます。
.mylogin.cnf
ログインパスファイルの不明瞭化された形式は、他のオプションファイルと同様に、オプショングループで構成されます。 .mylogin.cnf
の各オプショングループは、特定のオプションのみを許可するグループである「ログインパス、」と呼ばれます: host
, user
, password
, port
および socket
。 ログインパスオプショングループは、接続先の MySQL サーバーおよび認証に使用するアカウントを指定する一連のオプションと考えてください。 不明瞭化された例を次に示します:
[client]
user = mydefaultname
password = mydefaultpass
host = 127.0.0.1
[mypath]
user = myothername
password = myotherpass
host = localhost
クライアントプログラムを起動してサーバーに接続すると、クライアントは .mylogin.cnf
を他のオプションファイルとともに使用します。 その優先順位はほかのオプションファイルより高くなりますが、クライアントのコマンド行で明示的に指定されたオプションよりは低くなります。 オプションファイルが使用される順序の詳細は、セクション4.2.2.2「オプションファイルの使用」を参照してください。
代替ログインパスファイル名を指定するには、MYSQL_TEST_LOGIN_FILE
環境変数を設定します。 この変数は、mysql_config_editor、標準の MySQL クライアント (mysql、mysqladmin など) および mysql-test-run.pl テストユーティリティによって認識されます。
プログラムでは、次のようにログインパスファイルのグループが使用されます:
使用するログインパスを明示的に示す
--login-path=
オプションを指定しない場合、mysql_config_editor はデフォルトでname
client
ログインパスを操作します。-
--login-path
オプションを指定しない場合、クライアントプログラムは、ほかのオプションファイルから読み取られたものと同じオプショングループをログインパスファイルから読み取ります。 次のコマンドについて考えてみます:shell> mysql
デフォルトでは、mysql クライアントは他のオプションファイルから
[client]
および[mysql]
グループを読み取るため、ログインパスファイルからも読み取ります。 -
--login-path
オプションを使用すると、クライアントプログラムはさらにログインパスファイルから名前付きログインパスを読み取ります。 ほかのオプションファイルから読み取られたオプショングループは同じままです。 次のコマンドについて考えてみます:shell> mysql --login-path=mypath
mysql クライアントは、他のオプションファイルから
[client]
および[mysql]
を読み取り、ログインパスファイルから[client]
、[mysql]
および[mypath]
を読み取ります。 クライアントプログラムは、
--no-defaults
オプションが使用されている場合でもログインパスファイルを読み取ります。 これにより、--no-defaults
が存在する場合でも、コマンド行よりも安全な方法でパスワードを指定できます。
mysql_config_editor は、.mylogin.cnf
ファイルを不明瞭化してクリアテキストとして読み取れないようにし、クライアントプログラムによって不明瞭化されていない場合はその内容がメモリー内でのみ使用されるようにします。 このようにして、パスワードをクリアテキスト以外の形式でファイルに格納し、後でコマンドラインまたは環境変数で公開しなくても使用できます。mysql_config_editor には、ログインパスファイルの内容を表示するための print
コマンドが用意されていますが、この場合でも、他のユーザーが表示できるようにパスワード値がマスクされます。
mysql_config_editor で使用される不明瞭化により、.mylogin.cnf
でパスワードがクリアテキストとして表示されなくなり、誤ったパスワードの公開を防止することでセキュリティ対策が提供されます。 たとえば、通常の不明瞭化されていない my.cnf
オプションファイルを画面に表示すると、そこに含まれるパスワードはすべてのユーザーに表示されます。 .mylogin.cnf
では、これは true ではありませんが、使用される不明瞭化によって決定された攻撃者が検出されない可能性があるため、再利用不可能とみなすべきではありません。 マシンでファイルにアクセスするためのシステム管理権限を取得できるユーザーは、なんらかの労力で .mylogin.cnf
ファイルを不明瞭化解除できます。
ログインパスファイルは、現在のユーザーが読取りおよび書込み可能であり、他のユーザーはアクセスできない必要があります。 それ以外の場合、mysql_config_editor では無視され、クライアントプログラムでも使用されません。
mysql_config_editor は次のように起動します。
shell> mysql_config_editor [program_options] command [command_options]
ログインパスファイルが存在しない場合は、mysql_config_editor によって作成されます。
コマンド引数は次のとおりです:
program_options
は、一般的な mysql_config_editor オプションで構成されています。command
は、.mylogin.cnf
ログインパスファイルに対して実行するアクションを示します。 たとえば、set
はログインパスをファイルに書き出し、remove
はログインパスを削除し、print
はログインパスの内容を表示します。command_options
は、ログインパス名やログインパスで使用する値など、コマンドに固有の追加オプションを示します。
プログラム引数のセット内でのコマンド名の位置は重要です。 たとえば、次のコマンド行は同じ引数を持ちますが、結果は異なります。
shell> mysql_config_editor --help set
shell> mysql_config_editor set --help
最初のコマンドラインでは、mysql_config_editor の一般的なヘルプメッセージが表示され、set
コマンドは無視されます。 2 つ目のコマンドラインには、set
コマンドに固有のヘルプメッセージが表示されます。
デフォルトの接続パラメータを定義する client
ログインパスと、ホスト remote.example.com
の MySQL サーバーに接続するための remote
という追加のログインパスを確立するとします。 次のようにログインします:
デフォルトでは、
localuser
およびlocalpass
のユーザー名とパスワードを持つローカルサーバーユーザー名とパスワードが
remoteuser
およびremotepass
のリモートサーバーへ
.mylogin.cnf
ファイルにログインパスを設定するには、次の set
コマンドを使用します。 各コマンドを単一行に入力し、プロンプトが表示されたら適切なパスワードを入力します:
shell> mysql_config_editor set --login-path=client
--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 ではデフォルトで client
ログインパスが使用されるため、最初のコマンドから --login-path=client
オプションを省略しても効果を変更できません。
mysql_config_editor が .mylogin.cnf
ファイルに書き込む内容を確認するには、print
コマンドを使用します:
shell> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com
print
コマンドは、各ログインパスを行のセットとして表示します。各セットには最初にグループヘッダー (角かっこ内にログインパス名を示します) があり、ログインパスのオプション値がそれに続きます。 パスワード値はマスクされ、クリアテキストとして表示されません。
すべてのログインパスを表示するために --all
を指定しない場合、または名前付きログインパスを表示するために --login-path=
を指定した場合、name
print
コマンドによって client
ログインパスがデフォルトで表示されます (存在する場合)。
前述の例に示すように、ログインパスファイルには複数のログインパスを含めることができます。 このようにして、mysql_config_editor では、異なる MySQL サーバーに接続するため、または異なるアカウントを使用して特定のサーバーに接続するために、複数の「「パーソナリティ」」を簡単に設定できます。 これらはすべて、あとでクライアントプログラムを起動するときに --login-path
オプションを使用して名前で選択できます。 たとえば、リモートサーバーに接続するには、次のコマンドを使用します:
shell> mysql --login-path=remote
ここで、mysql は、他のオプションファイルから[client]
および[mysql]
オプショングループを読み取り、ログインパスファイルから[client]
、[mysql]
および[remote]
グループを読み取ります。
ローカルサーバーに接続するには、次のコマンドを使用します:
shell> mysql --login-path=client
mysql はデフォルトで client
および mysql
のログインパスを読み取るため、--login-path
オプションでは何も追加されません。 このコマンドは次のコマンドと同等です:
shell> mysql
ログインパスファイルから読み取られたオプションは、ほかのオプションファイルから読み取られたオプションよりも優先されます。 後でログインパスファイルに表示されるログインパスグループから読み取られるオプションは、以前にファイルに表示されたグループから読み取られるオプションよりも優先されます。
mysql_config_editor では、ログインパスが作成順にログインパスファイルに追加されるため、最初により一般的なログインパスを作成し、後でより具体的なパスを作成する必要があります。 ファイル内でログインパスを移動する必要がある場合は、ログインパスを削除してから再作成し、最後に追加できます。 たとえば、client
ログインパスはすべてのクライアントプログラムによって読み取られるのに対し、mysqldump
ログインパスは mysqldump によって読取り専用であるため、より一般的です。 後で指定したオプションは、前に指定したオプションをオーバーライドするため、mysqldump
の順序でログインパスを配置すると、mysqldump 固有のオプションで client
オプションをオーバーライドできます。
mysql_config_editor で set
コマンドを使用してログインパスを作成する場合、使用可能なすべてのオプション値 (ホスト名、ユーザー名、パスワード、ポート、ソケット) を指定する必要はありません。 指定した値のみがパスに書き出されます。 欠落している値があとで必要になった場合は、クライアントパスを起動して MySQL サーバーに接続するときに、オプションファイルまたはコマンド行で指定できます。 コマンド行で指定されたオプションは、ログインパスファイルまたはその他のオプションファイルで指定されたオプションより優先されます。 たとえば、remote
ログインパスの資格証明がホスト remote2.example.com
にも適用される場合は、そのホスト上のサーバーに次のように接続します:
shell> mysql --login-path=remote --host=remote2.example.com
mysql_config_editor の一般オプション
mysql_config_editor では、次の一般的なオプションがサポートされています。これらは、コマンドラインで指定された任意のコマンドの前に使用できます。 コマンド固有のオプションの詳細は、mysql_config_editor のコマンドおよびコマンド固有のオプション を参照してください。
-
一般的なヘルプメッセージを表示して終了します。
コマンド固有のヘルプメッセージを表示するには、次のように mysql_config_editor を起動します (
command
はhelp
以外のコマンドです):shell> mysql_config_editor command --help
-
--debug[=
,debug_options
]-#
debug_options
デバッグのログを書き込みます。 一般的な
debug_options
文字列はd:t:o,
です。 デフォルトはfile_name
d:t:o,/tmp/mysql_config_editor.trace
です。このオプションは、MySQL が
WITH_DEBUG
を使用して構築された場合にのみ使用できます。 Oracle によって提供される MySQL リリースバイナリは、このオプションを使用して構築されません。 -
冗長モード。 プログラムの動作についてより多くの情報を出力します。 このオプションは、操作が期待する効果を生じない場合に、問題を診断するのに役立ちます。
-
バージョン情報を表示して終了します。
mysql_config_editor のコマンドおよびコマンド固有のオプション
このセクションでは、許可される mysql_config_editor コマンドについて説明し、各コマンドについて、コマンドラインのコマンド名の後に許可されるコマンド固有のオプションについて説明します。
また、mysql_config_editor は、任意のコマンドの前に使用できる一般的なオプションをサポートしています。 これらのオプションの詳細は、mysql_config_editor の一般オプション を参照してください。
mysql_config_editor は次のコマンドをサポートします。
-
help
一般的なヘルプメッセージを表示して終了します。 このコマンドには、次のオプションはありません。
コマンド固有のヘルプメッセージを表示するには、次のように mysql_config_editor を起動します (
command
はhelp
以外のコマンドです):shell> mysql_config_editor command --help
-
print [
options
]パスワードが
*****
として表示されることを除き、ログインパスファイルの内容を不明瞭化された形式で出力します。ログインパスが指定されていない場合、デフォルトのログインパス名は
client
です。--all
および--login-path
の両方が指定されている場合、--all
が優先されます。print
コマンドでは、コマンド名の後に次のオプションを指定できます:-
--help
,-?
print
コマンドのヘルプメッセージを表示して終了します。一般的なヘルプメッセージを表示するには、mysql_config_editor --help を使用します。
-
--all
ログインパスファイル内のすべてのログインパスの内容を出力します。
-
--login-path=
,name
-G
name
指定されたログインパスの内容を出力します。
-
-
remove [
options
]ログインパスファイルからログインパスを削除するか、ログインパスからオプションを削除してログインパスを変更します。
このコマンドは、
--host
,--password
,--port
,--socket
および--user
オプションで指定されたオプションのみをログインパスから削除します。 これらのオプションのいずれも指定しない場合、remove
はログインパス全体を削除します。 たとえば、このコマンドは、mypath
ログインパス全体ではなく、mypath
ログインパスからuser
オプションのみを削除します:shell> mysql_config_editor remove --login-path=mypath --user
このコマンドは、
mypath
ログインパス全体を削除します:shell> mysql_config_editor remove --login-path=mypath
remove
コマンドでは、コマンド名の後に次のオプションを指定できます:-
--help
,-?
remove
コマンドのヘルプメッセージを表示して終了します。一般的なヘルプメッセージを表示するには、mysql_config_editor --help を使用します。
-
--host
,-h
ホスト名をログインパスから削除します。
-
--login-path=
,name
-G
name
削除または変更するログインパス。 このオプションが指定されていない場合、デフォルトのログインパス名は
client
です。 -
--password
,-p
パスワードをログインパスから削除します。
-
--port
,-P
TCP/IP ポート番号をログインパスから削除します。
-
--socket
,-S
Unix ソケットファイル名をログインパスから削除します。
-
--user
,-u
ユーザー名をログインパスから削除します。
-
--warn
,-w
コマンドがデフォルトのログインパス (
client
) を削除しようとし、--login-path=client
が指定されていない場合に、ユーザーに警告して確認を求めます。 このオプションはデフォルトで有効です。無効にするには、--skip-warn
を使用します。
-
-
reset [
options
]ログインパスファイルの内容を空にします。
reset
コマンドでは、コマンド名の後に次のオプションを指定できます:-
--help
,-?
reset
コマンドのヘルプメッセージを表示して終了します。一般的なヘルプメッセージを表示するには、mysql_config_editor --help を使用します。
-
-
set [
options
]ログインパスファイルにログインパスを書き込みます。
このコマンドは、
--host
,--password
,--port
,--socket
および--user
オプションで指定されたオプションのみをログインパスに書き込みます。 これらのオプションがいずれも指定されない場合は、mysql_config_editor はログインパスを空のグループとして書き出します。set
コマンドでは、コマンド名の後に次のオプションを指定できます:-
--help
,-?
set
コマンドのヘルプメッセージを表示して終了します。一般的なヘルプメッセージを表示するには、mysql_config_editor --help を使用します。
-
--host=
,host_name
-h
host_name
ログインパスに書き出すホスト名。
-
--login-path=
,name
-G
name
作成するログインパス。 このオプションが指定されていない場合、デフォルトのログインパス名は
client
です。 -
--password
,-p
ログインパスに書き出すパスワードを要求します。 mysql_config_editor にプロンプトが表示されたら、パスワードを入力して Enter を押します。 ほかのユーザーがパスワードを見るのを防ぐため、mysql_config_editor はエコーしません。
空のパスワードを指定するには、パスワードプロンプトで Enter を押します。 ログインパスファイルに書き込まれるログインパスには、次のような行が含まれます:
password =
-
--port=
,port_num
-P
port_num
ログインパスに書き出す TCP/IP ポート番号。
-
--socket=
,file_name
-S
file_name
ログインパスに書き込む Unix ソケットファイル名。
-
--user=
,user_name
-u
user_name
ログインパスに書き出すユーザー名。
-
--warn
,-w
コマンドが既存のログインパスを上書きしようとした場合に、ユーザーに警告して確認を求めます。 このオプションはデフォルトで有効です。無効にするには、
--skip-warn
を使用します。
-