Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


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

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 および mysqlmysqladmin、などの 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 内の各オプショングループはログインパスと呼ばれ、hostuser、および 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 ログインパスの上書きについて警告し、確認を要求  

  • --help, -?

    ヘルプメッセージを表示して終了します。set または remove などのコマンド名が前にある場合は、そのコマンドに関する情報を表示します。

  • --all

    print コマンドに対して、ログインファイル内のすべてのログインパスを出力します。

  • --debug[=debug_options], -# debug_options

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルトは d:t:o です。

  • --host=host_name, -h host_name

    set コマンドに対しては、ログインパスに書き出すホスト名。remove コマンドに対しては、ログインパスからホスト名を削除します。

  • --login-path=name, -G name

    printremove、および set コマンドに対して、.mylogin.cnf ログインファイル内で使用するログインパス。

    ユーザーが MySQL サーバーへの接続に使用するログインパスを指定できるように、クライアントプログラムも --login-path オプションをサポートします。クライアントプログラムでは、--login-path は指定する最初のオプションでなければなりません。これは mysql_config_editor には該当しません。セクション4.2.7「オプションファイルの処理に影響するコマンド行オプション」を参照してください。

  • --password, -p

    set コマンドに対して、mysql_config_editor がパスワードを要求し、ユーザーが入力した値をログインパスに書き出すようになります。mysql_config_editor が起動してプロンプトを表示したあと、ユーザーはパスワードを入力して Enter を押すようにしてください。ほかのユーザーがパスワードを見るのを防ぐため、mysql_config_editor はエコーしません。

    このオプションでは、オプション名のあとにパスワード値を指定することはできません。つまり mysql_config_editor では、ほかのユーザーに見られる可能性のあるコマンド行にパスワードを入力することは決してありません。これは、ほかのほとんどの MySQL プログラムとは異なります。ほかのプログラムでは --password=pass_val または -ppass_val としてコマンド行でパスワードを指定できます。(ただし、この方法はセキュアではなく、避けるべきです。)

    remove コマンドに対しては、ログインパスからパスワードを削除します。

  • --port=port_num, -P port_num

    set コマンドに対しては、ログインパスに書き出す TCP/IP ポート番号。remove コマンドに対しては、ログインパスからポート番号を削除します。

  • --socket=file_name, -S file_name

    set コマンドに対しては、ログインパスに書き出す Unix ソケットファイル名。remove コマンドに対しては、ログインパスからソケットファイルを削除します。

  • --user=user_name, -u user_name

    set コマンドに対しては、ログインパスに書き出すユーザー名。remove コマンドに対しては、ログインパスからユーザー名を削除します。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

  • --version, -V

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

  • --warn, -w

    set コマンドに対して、コマンドが既存のログインパスを上書きしようとする場合に、ユーザーに警告して確認を求めます。このオプションはデフォルトで有効です。無効にするには、--skip-warn を使用します。


User Comments
  Posted by Gayathri Dhanasegaran on January 28, 2015
Password string with character "#" in it will cause authentication failure because when strings are read, hash characters are treated as the start of a comment.

Here is the stack details on which I encountered the bug:
OS: Linux 2.6.32-504.1.3.el6.x86_64
MySQL: MySQL Enterprise Edition 5.6.21
Utilities: 1.5.2-1.el6
RPMS:
- mysql-utilities-commercial-1.5.2-1.el6.noarch.rpm
- mysql-utilities-commercial-extra-1.5.2-1.el6.noarch.rpm

Bug: http://bugs.mysql.com/bug.php?id=74691
  Posted by Stefan Lasiewski on June 9, 2015
The documentation above isn't super clear how to use mysql-config-editor with a socket.

If you use a socket file, you must also specify the --host, like this. This isn't entirely obvious, because a hostname implies a network, when a socket implies that we're not using the network at all.

```
dbhost01 # mysql_config_editor set --socket=/var/lib/mysql/mysql.sock --user=root --password --host=localhost

dbhost01 # mysql_config_editor print --login-path=client
[client]
user = root
password = *****
host = localhost
socket = /var/lib/mysql/mysql.sock
```
  Posted by danny Williams on September 24, 2015
In debian this command was not available to me until I installed the libmysqlclient-dev package.

This is known but is not a bug according to:
http://bugs.mysql.com/bug.php?id=73670

Sign Up Login You must be logged in to post a comment.