MySQL ではバージョン 3.22 以降、サーバとクライアントのデフォルトスタートアップオプションをオプション設定ファイルから読み取ることができるようになっています。
Windows では、MySQL はデフォルトオプションを以下のファイルから読み取ります。
ファイル名 | 用途 |
windows-directory\my.ini |
グローバルオプション |
C:\my.cnf |
グローバルオプション |
windows-directory
は Windows
ディレクトリの保存場所です。
Unix では、MySQL はデフォルトオプションを以下のファイルから読み取ります。
ファイル名 | 用途 |
/etc/my.cnf |
グローバルオプション |
DATADIR/my.cnf |
サーバ固有オプション |
defaults-extra-file |
--defaults-extra-file=path
で指定されたファイル |
~/.my.cnf |
ユーザ固有オプション |
DATADIR
は MySQL
データディレクトリです(通常、バイナリインストールの場合は
/usr/local/mysql/data
、ソースインストールの場合は
/usr/local/var
)。 注意:
これは、コンフィギャ時に指定されたディレクトリです。mysqld
起動時に --datadir
で指定したディレクトリではありません。サーバはコマンドラインの引数を処理する前にオプション設定ファイルを探すため、--datadir
による指定は、サーバがオプション設定ファイルを探す場所に影響しません。
注意: Windows
では、オプション設定ファイル内のすべてのパスを
‘\
’
ではなく、‘/
’
で指定してください。‘\
’
は MySQL の
エスケープ文字であるため、‘\
’
を使用する場合は 2
回指定する必要があります。
MySQL は、オプション設定ファイルを上記の順序で読み取ろうとします。複数のオプション設定ファイルが存在する場合、後で読み取られたファイルに指定されているオプションの方が、先に読み取られたファイル内の同一オプションより優先されます。コマンドラインで指定されたオプションは、オプション設定ファイルで指定されたオプションよりも優先されます。オプションによっては、環境変数を使用して指定できるものもあります。 コマンドラインまたはオプション設定ファイルで指定されたオプションの方が、環境変数値よりも優先されます。 See 付録 F. 環境変数。
オプション設定ファイルをサポートするプログラムは、mysql
、mysqladmin
、mysqld
、mysqld_safe
、mysql.server
、mysqldump
、mysqlimport
、mysqlshow
、mysqlcheck
、myisamchk
、および
myisampack
です。
バージョン 4.0.2 より、loose
プリフィックスをコマンドラインオプション(または
my.cnf
のオプション)に使用できます。オプションの前に
loose
を付けると、オプションが未知の場合でも、それを読み取ったプログラムはエラー終了せず、以下の警告を出力します。
shell> mysql --loose-no-such-option
MySQL
プログラム実行時にコマンドラインで指定できる長いオプションは、オプション設定ファイルで指定できます(ダッシュ2つを前に付けない)。使用可能なオプションの一覧を表示するには、--help
オプション付きでそのプログラムを実行してください。
オプション設定ファイルには、以下の形式の行を含めることができます。
#comment
コメント行は、‘#
’
または ‘;
’
で始める。MySQL 4.0.14
より、コメントを行の途中からでも開始できるようになった。空白行は無視される。
[group]
group
は、オプションを設定するプログラムまたはグループの名前。グループ行の後の
option
行または
set-variable
行はすべてそのグループに適用される。これは、オプション設定ファイルの最後、または他のグループ行が指定されるまで有効。
option
これは、コマンドラインの
--option
と同等。
option=value
これは、コマンドラインの
--option=value
と同等。注意:
オプションの引数にコメント文字が含まれる場合、引数を二重引用符で囲む必要がある。
set-variable = name=value
これは、コマンドラインの
--set-variable=name=value
と同等。
注意: --set-variable
は MySQL 4.0
で廃止された。MySQL 4.0
では、プログラム変数名をオプション名として使用できる。コマンドラインでは、--name=value
を使用する。オプション設定ファイルでは、name=value
を使用する。
[client]
グループにより、すべての
MySQL クライアント(mysqld
ではなく)に適用されるオプションを指定できます。これは、サーバに接続する際に使用するパスワードを指定するための理想的なグループです(ただし、管理者以外のユーザがオプション設定ファイルを読み書きできないようにしてください)。
特定のバージョンの mysqld
サーバだけが読み取れるオプションを作成するには、[mysqld-4.0]
、[mysqld-4.1]
などを使用します。
[mysqld-4.0] new
上記の new オプションは、MySQL サーババージョン 4.0.x でのみ使用されます。
注意:
オプションおよび値に対して、その前後にある空白は自動的に削除されます。エスケープシーケンス
'\b
'、'\t
'、'\n
'、'\r
'、'\\
'、および
'\s
'
を値文字列に使用することができます('\s
'
== blank)。
次に、一般的なグローバルオプション設定ファイルの例を示します。
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M [mysqldump] quick
次に、一般的なユーザオプション設定ファイルの例を示します。
[client] # 以下のパスワードは、標準の MySQL クライアント全てに使用されます password="my_password" [mysql] no-auto-rehash set-variable = connect_timeout=2 [mysqlhotcopy] interactive-timeout
ソースディストリビューションがあれば、my-xxxx.cnf
という名前の設定ファイルのサンプルが
support-files
ディレクトリに含まれています。
バイナリディストリビューションの場合は、DIR/support-files
ディレクトリにあります。ここで、DIR
は MySQL
インストールディレクトリのパスです(通常、C:\mysql
または
/usr/local/mysql
)。現在、小、中、大、および特大システム用のサンプル設定ファイルが用意されています。my-xxxx.cnf
を自分のホームディレクトリにコピーして、名前を
.my.cnf
に変更し、このファイルを使用してみてください。
オプション設定ファイルをサポートする MySQL プログラムはすべて、以下のオプションをサポートします。
オプション | 説明 |
--no-defaults |
オプション設定ファイルを一切読み取らない。 |
--print-defaults |
プログラム名と、取得するすべてのオプションを出力する。 |
--defaults-file=full-path-to-default-file |
指定された設定ファイルだけを使用する。 |
--defaults-extra-file=full-path-to-default-file |
グローバル設定ファイルを読み取った後、ユーザ設定ファイルの前にこの設定ファイルを読み取る。 |
注意:
これらのオプションは、コマンド行の最初に置く必要があります。ただし、--print-defaults
だけは、--defaults-file
または
--defaults-extra-file
の直後に置くことができます。
開発者向け注意: オプション設定ファイルの処理としては、コマンドライン引数を処理する前に、オプション設定ファイル内のすべての合致するオプション(該当グループのオプション)が処理されるようになっています。複数回指定されているオプションの最後のインスタンスを使用するプログラムにとっては、この処理で問題ありません。複数回指定されているオプションを処理するが、オプション設定ファイルは読み取らない旧式のプログラムについては、2 行追加するだけでその機能を装備できます。 その方法については、標準 MySQL クライアントのいずれかのソースコードを確認してください。
シェルスクリプトで、my_print_defaults
コマンドを使用してオプション設定ファイルを解析することができます。以下の例は、[client]
グループと [mysql]
グループに属すオプションの表示要求があった場合に、my_print_defaults
が生成する可能性のある出力です。
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.