ほとんどの MySQL プログラムはオプションファイル (構成ファイルと呼ばれることもあります) から起動オプションを読み取ることができます。オプションファイルは、よく使用されるオプションを指定するための便利な方法を提供し、プログラムを実行するたびにコマンド行で入力する必要がなくなります。MySQL サーバーには MySQL によって多数の事前構成済みのオプションファイルが提供されます。
プログラムがオプションファイルを読み取るかどうかを判断するには、--help
オプションを使用してプログラムを呼び出します。(mysqld では、--verbose
および --help
を使用します。)プログラムがオプションファイルを読み取る場合は、どのファイルを探すのか、およびどのオプショングループを認識するのかが、ヘルプメッセージに示されます。
ログインパスオプションを含む .mylogin.cnf
ファイルは、mysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。「ログインパス」は、host
、user
、および password
という限定されたオプションのセットのみを許可するオプショングループです。クライアントプログラムは、.mylogin.cnf
からどのログインパスを読み取るのかを、--login-path
オプションを使用して指定します。
別のファイル名を指定するには、MYSQL_TEST_LOGIN_FILE
環境変数を設定します。この変数は mysql-test-run.pl テストユーティリティーが使用しますが、mysql_config_editor
および mysql、mysqladmin、などの MySQL クライアントによっても認識されます。
MySQL Cluster プログラムで使用されるオプションファイルは、セクション18.3「MySQL Cluster の構成」で説明します。
Windows では、MySQL プログラムは起動オプションを次のファイルから指定された順 (トップの項目が最初に使用されます) で読み取ります。
ファイル名 | 目的 |
---|---|
,
|
グローバルオプション |
,
|
グローバルオプション |
C:\my.ini , C:\my.cnf
|
グローバルオプション |
,
|
グローバルオプション |
defaults-extra-file |
--defaults-extra-file= によって指定されるファイル (ある場合) |
|
ログインパスオプション |
%PROGRAMDATA%
は、ホスト上のすべてのユーザーのアプリケーションデータを含むファイルシステムディレクトリを示します。このパスはデフォルトで、Microsoft Windows Vista 以降では C:\ProgramData
、Microsoft Windows のそれ以前のバージョンでは C:\Documents and Settings\All Users\Application Data
です。
%WINDIR%
は、Windows ディレクトリの場所を示します。これは一般には C:\WINDOWS
です。次のコマンドを使用して WINDIR
環境変数の値から正確な場所を割り出すことができます。
C:\> echo %WINDIR%
INSTALLDIR
は、MySQL のインストールディレクトリを示します。これは通常、MySQL 5.6 がインストールウィザードおよび構成ウィザードを使用してインストールされた場合には、C:\
です。ここで、PROGRAMDIR
\MySQL\MySQL 5.6 ServerPROGRAMDIR
はプログラムディレクトリ (英語バージョンの Windows では通常 Program Files
) です。セクション2.3.3「MySQL Installer を使用した MySQL の Microsoft Windows へのインストール」を参照してください。
%APPDATA%
は、Windows アプリケーションデータディレクトリの値を示します。次のコマンドを使用して APPDATA
環境変数の値から正確な場所を判断できます。
C:\> echo %APPDATA%
Unix、Linux、および OS X では、MySQL プログラムは起動オプションを次のファイルから指定された順 (トップの項目が最初に使用されます) で読み取ります。
ファイル名 | 目的 |
---|---|
/etc/my.cnf |
グローバルオプション |
/etc/mysql/my.cnf |
グローバルオプション |
|
グローバルオプション |
$MYSQL_HOME/my.cnf |
サーバー固有のオプション |
defaults-extra-file |
--defaults-extra-file= によって指定されるファイル (ある場合) |
~/.my.cnf |
ユーザー固有のオプション |
~/.mylogin.cnf |
ログインパスオプション |
~
は、現在のユーザーのホームディレクトリ ($HOME
の値) を示します。
SYSCONFDIR
は、MySQL がビルドされたときに SYSCONFDIR
オプションとともに CMake に指定されたディレクトリを示します。デフォルトでは、これはコンパイル済みのインストールディレクトリの下にある etc
ディレクトリです。
MYSQL_HOME
はサーバー固有の my.cnf
ファイルが存在するディレクトリへのパスを含む環境変数です。MYSQL_HOME
がセットされていない状態で mysqld_safe プログラムを使ってサーバーを起動すると、mysqld_safe は次のように MYSQL_HOME
をセットしようとします。
BASEDIR
およびDATADIR
が、それぞれ MySQL ベースディレクトリとデータディレクトリのパス名を示すようにします。DATADIR
にはmy.cnf
ファイルが存在し、BASEDIR
には存在しない場合、mysqld_safe はMYSQL_HOME
をDATADIR
にセットします。そうでない場合は、
MYSQL_HOME
がセットされておらず、my.cnf
ファイルがDATADIR
に存在しない場合、mysqld_safe はBASEDIR
にMYSQL_HOME
をセットします。
MySQL 5.6 では、DATADIR
を my.cnf
の場所として使用することは非推奨です。
一般的に、DATADIR
はバイナリインストールでは /usr/local/mysql/data
、ソースインストールでは /usr/local/var
です。これは構成時に指定されたデータディレクトリの場所であって、mysqld が起動したとき --datadir
オプションで指定されるものではないということに注意してください。実行時に --datadir
を使用しても、サーバーがオプションファイルを探す際に何の影響ももたらしません。これはサーバーがオプションを処理する前にオプションファイルを探すからです。
MySQL は、前述の順序でオプションファイルを検索し、存在するものをすべて読み取ります。使用したいオプションファイルが存在しない場合は、プレーンテキストエディタで作成します。
所定のオプションが複数ある場合は、最後のインスタンスが優先されます。1 つ例外があります。mysqld では、オプションファイルで指定されたユーザーがコマンド行でオーバーライドされるのを防ぐため、安全対策として --user
オプションの最初のインスタンスが使用されます。
Unix プラットフォームでは、MySQL はだれでも書き込める構成ファイルを無視します。これはセキュリティー対策として意図的なものです。
MySQL プログラムを実行する際にコマンド行で指定できるすべての長いオプションは、オプションファイルでも指定できます。プログラムに対して使用可能なオプションのリストを取得するには、--help
オプションを使用してそのプログラムを実行します。
オプションファイルでオプションを指定する構文は、コマンド行構文と同様です (セクション4.2.4「コマンド行でのオプションの使用」を参照してください)。ただしオプションファイルでは、先頭の 2 つのダッシュはオプション名から省略し、1 行で 1 つのオプションのみを指定します。たとえば、コマンド行での --quick
および --host=localhost
は、オプションファイルでは独立した行にある quick
および host=localhost
として指定するようにしてください。--loose-
形式のオプションをオプションファイルで指定するには、opt_name
loose-
として作成します。
opt_name
オプションファイルの空の行は無視されます。空でない行は次のいずれかの形式を取ることができます。
-
#
,comment
;
comment
「
#
」 または 「;
」 で始まるコメント行。「#
」 を使用するコメントは、行の途中で開始することもできます。 -
[
group
]group
はオプションを設定するプログラムまたはグループの名前です。グループ行のあと、すべてのオプション設定行は、オプションファイルが終了するか、または別のグループ行が指定されるまで、名前を指定したグループに適用されます。オプショングループ名では、大文字と小文字は区別されません。 -
opt_name
これは、コマンド行の
--
と同等です。opt_name
-
opt_name
=value
これは、コマンド行の
--
と同等です。オプションファイルでは、「opt_name
=value
=
」 文字の周囲にスペースを置くことができます。これはコマンド行ではできません。オプションで、値を一重引用符または二重引用符で囲むことができます。これは、値が 「#
」 コメント文字を含む場合に便利です。
先頭および末尾のスペースは、自動的にオプション名および値から削除されます。
エスケープシーケンス 「\b
」、「\t
」、「\n
」、「\r
」、「\\
」、および 「\s
」 をオプション値で使用して、バックスペース、タブ、改行、復帰改行、バックスラッシュ、およびスペース文字を表すことができます。オプションファイルでのエスケープのルール:
バックスラッシュに有効なエスケープシーケンス文字が続く場合、そのシーケンスはシーケンスが表す文字に変換されます。たとえば、「
\s
」 はスペースに変換されます。バックスラッシュに有効なエスケープシーケンス文字が続かない場合は、変更されません。たとえば、「
\S
」 はそのままです。
前述のルールは、バックスラッシュそのものは 「\\
」 で指定できることを意味します。または、有効なエスケープシーケンス文字が続かなければ 「\
」 で指定できます。
オプションファイルにおけるエスケープシーケンスのルールは、SQL ステートメントにおける文字列リテラルのエスケープシーケンスのルールとは若干異なります。後者の場合は、「x
」 が有効なエスケープシーケンス文字ではない場合、「\
」 は 「x
\
」 ではなく 「x
x
」 になります。セクション9.1.1「文字列リテラル」を参照してください。
オプションファイル値のエスケープのルールは、「\
」 をパス名区切り文字として使用する Windows パス名に特に関係します。Windows パス名の区切り文字は、エスケープシーケンス文字が続く場合は 「\\
」 と記述する必要があります。そうでない場合は 「\\
」 または 「\
」 と記述できます。または、Windows パス名に 「/
」 を使用することもでき、「\
」 として扱われます。オプションファイルでベースディレクトリ C:\Program Files\MySQL\MySQL Server 5.6
を指定するとします。これはいくつかの方法で実行できます。例:
basedir="C:\Program Files\MySQL\MySQL Server 5.6"
basedir="C:\\Program Files\\MySQL\\MySQL Server 5.6"
basedir="C:/Program Files/MySQL/MySQL Server 5.6"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.6
オプショングループ名がプログラム名と同じである場合、グループ内のオプションは特にそのプログラムに適用されます。たとえば、[mysqld]
グループおよび [mysql]
グループは、それぞれ mysqld サーバーおよび mysql クライアントプログラムに適用されます。
[client]
オプショングループは、すべてのクライアントプログラムによって読み取られます (しかし、mysqld には読み取られません)。このため、すべてのクライアントに適用されるオプションを指定できます。たとえば、[client]
は、サーバーへの接続に使用するパスワードを指定するために使用するのに最適なグループです。(ただし、ほかの人にパスワードを知られないように、オプションファイルは必ず自分にしか読み書きできないようにしてください。)使用するすべてのクライアントプログラムが [client]
グループを認識しないかぎり、オプションに置かないようにしてください。そのオプションを理解しないプログラムを実行しようとすると、そのプログラムはエラーメッセージを表示してから終了します。
一般的なグローバルオプションファイルを次に示します。
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
[mysqldump]
quick
前述のオプションファイルは、key_buffer_size
変数および max_allowed_packet
変数をセットする行に
構文を使用します。
var_name
=value
一般的なユーザーオプションファイルを次に示します。
[client]
# The following password will be sent to all standard MySQL clients
password="my_password"
[mysql]
no-auto-rehash
connect_timeout=2
[mysqlhotcopy]
interactive-timeout
MySQL の特定のリリースシリーズの mysqld サーバーのみに読み取らせるべきオプショングループを作成する場合は、[mysqld-5.5]
、[mysqld-5.6]
、などの名前のグループを使用することで実行できます。次のグループは、--new
オプションが 5.6.x バージョン番号の MySQL サーバーのみに使用されるべきであることを示します。
[mysqld-5.6]
new
オプションファイルで、!include
ディレクティブを使用してほかのオプションファイルをインクルードしたり、!includedir
を使用して特定のディレクトリでオプションファイルを検索したりできます。たとえば、/home/mydir/myopt.cnf
ファイルをインクルードするには、次のディレクティブを使用します。
!include /home/mydir/myopt.cnf
/home/mydir
ディレクトリを検索してそこで見つかったオプションファイルを読み取るには、次のディレクティブを使用します。
!includedir /home/mydir
ディレクトリ内のオプションファイルが読み取られる順序は保証されません。
現在、Unix オペレーティングシステムで !includedir
ディレクティブを使用して検索およびインクルードされるファイルは、.cnf
で終わるファイル名を持っていなくてはなりません。Windows においては、このディレクティブは .ini
または .cnf
拡張子を持つファイルをチェックします。
インクルードされるオプションファイルの内容は、ほかのオプションファイルと同様に記述します。すなわち、オプションのグループを含み、それぞれの前にオプションが適用されるプログラムを示す [
行があるようにしてください。
group
]
インクルードされるファイルの処理中、現在のプログラムが検索するグループ内のオプションのみが使用されます。その他のグループは無視されます。my.cnf
ファイルに次の行が含まれるとします。
!include /home/mydir/myopt.cnf
また、/home/mydir/myopt.cnf
は次のようであるとします。
[mysqladmin]
force
[mysqld]
key_buffer_size=16M
my.cnf
が mysqld によって処理される場合、/home/mydir/myopt.cnf
内の [mysqld]
グループのみが使用されます。このファイルが mysqladmin によって処理される場合、[mysqladmin]
グループのみが使用されます。このファイルがその他のプログラムによって処理される場合、/home/mydir/myopt.cnf
のオプションは使用されません。
!includedir
ディレクティブは同様に処理されますが、指名されたディレクトリ内のすべてのオプションファイルが読み取られる点が異なります。