MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

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 テストユーティリティによって認識されます。

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

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 によって作成されます。

コマンド引数は次のとおりです:

プログラム引数のセット内でのコマンド名の位置は重要です。 たとえば、次のコマンド行は同じ引数を持ちますが、結果は異なります。

shell> mysql_config_editor --help set
shell> mysql_config_editor set --help

最初のコマンドラインでは、mysql_config_editor の一般的なヘルプメッセージが表示され、set コマンドは無視されます。 2 つ目のコマンドラインには、set コマンドに固有のヘルプメッセージが表示されます。

デフォルトの接続パラメータを定義する client ログインパスと、ホスト remote.example.com の MySQL サーバーに接続するための remote という追加のログインパスを確立するとします。 次のようにログインします:

.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 バージョン情報を表示して終了

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

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

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

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