MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  mysql_config_editor — MySQL 構成ユーティリティー

4.6.7 mysql_config_editor — MySQL 構成ユーティリティー

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 クライアント (mysqlmysqladmin など) および mysql-test-run.pl テストユーティリティによって認識されます。

プログラムでは、次のようにログインパスファイルのグループが使用されます:

  • 使用するログインパスを明示的に示す --login-path=name オプションを指定しない場合、mysql_config_editor はデフォルトで 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_editorset コマンドを使用してログインパスを作成する場合、使用可能なすべてのオプション値 (ホスト名、ユーザー名、パスワード、ポート、ソケット) を指定する必要はありません。 指定した値のみがパスに書き出されます。 欠落している値があとで必要になった場合は、クライアントパスを起動して MySQL サーバーに接続するときに、オプションファイルまたはコマンド行で指定できます。 コマンド行で指定されたオプションは、ログインパスファイルまたはその他のオプションファイルで指定されたオプションより優先されます。 たとえば、remote ログインパスの資格証明がホスト remote2.example.com にも適用される場合は、そのホスト上のサーバーに次のように接続します:

shell> mysql --login-path=remote --host=remote2.example.com

mysql_config_editor の一般オプション

mysql_config_editor では、次の一般的なオプションがサポートされています。これらは、コマンドラインで指定された任意のコマンドの前に使用できます。 コマンド固有のオプションの詳細は、mysql_config_editor のコマンドおよびコマンド固有のオプション を参照してください。

表 4.20 「mysql_config_editor の一般オプション」

オプション名 説明
--debug デバッグログの書込み
--help ヘルプメッセージを表示して終了
--verbose 冗長モード
--version バージョン情報を表示して終了

  • --help, -?

    一般的なヘルプメッセージを表示して終了します。

    コマンド固有のヘルプメッセージを表示するには、次のように mysql_config_editor を起動します (commandhelp 以外のコマンドです):

    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 リリースバイナリは、このオプションを使用して構築されません。

  • --verbose, -v

    冗長モード。 プログラムの動作についてより多くの情報を出力します。 このオプションは、操作が期待する効果を生じない場合に、問題を診断するのに役立ちます。

  • --version, -V

    バージョン情報を表示して終了します。

mysql_config_editor のコマンドおよびコマンド固有のオプション

このセクションでは、許可される mysql_config_editor コマンドについて説明し、各コマンドについて、コマンドラインのコマンド名の後に許可されるコマンド固有のオプションについて説明します。

また、mysql_config_editor は、任意のコマンドの前に使用できる一般的なオプションをサポートしています。 これらのオプションの詳細は、mysql_config_editor の一般オプション を参照してください。

mysql_config_editor は次のコマンドをサポートします。

  • help

    一般的なヘルプメッセージを表示して終了します。 このコマンドには、次のオプションはありません。

    コマンド固有のヘルプメッセージを表示するには、次のように mysql_config_editor を起動します (commandhelp 以外のコマンドです):

    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 を使用します。


関連キーワード:  パス, コマンド, ログイン, editor, 表示, プログラム, ログインパスファイル, サーバー, login, path