MySQLプログラムの多くは、スタートアップのオプションをオプションファイル(時にコンフィグレーションファイルとも呼ばれる)から解読することができます。オプションファイルはよく使用されるオプションを指定するのに便利で、これによって毎回プログラムを起動させるたびにコマンドラインにおける作業を省略することができます。MySQLサーバにはMySQLによって多大なpreconfigured option filesが提供されます。
プログラムがオプションファイルを解読しているかを確認するには、--help(mysqldには--verboseと--help)を使用してプログラムを起動します。プログラムがオプションファイルを解読している場合には、ヘルプメッセージによって解読中のファイルとどのオプショングループを認識中かが表示されます。
注記 :MySQL クラスタープログラムを伴うオプションファイルについては 項14.4. 「MySQL Cluster の設定」で述べられています。
Windowsにおいて、MySQLプログラムは次のファイルからスタートアップオプションを解読します。
| ファイル名 | 目的 |
|
グローバルオプション |
C:\my.cnf |
グローバルオプション |
|
グローバルオプション |
defaults-extra-file |
--defaults-extra-file=で指定されたファイル(あれば) |
WINDIR
ユーザのWindowsディレクトリの場所を表しています。一般的に、C:\WINDOWS
もしくは
C:\WINNTになります。以下のコマンドを使用して
WINDIR
環境変数の値から正確なロケーションを割り出すことができます。
C:\> echo %WINDIR%
INSTALLDIR
はMySQLのインストールディレクトリを表します。これは主に、C:\ です。MySQL
5.1がインストールとコンフィギュレーションウィザードを使用してインストールされた場合、PROGRAMDIR\MySQL\MySQL
5.1 ServerPROGRAMDIR
がプログラムディレクトリ(通常は英語バージョンWindows上の
Program Files を表します。 詳細は
項2.3.4.14. 「my.ini ファイルのロケーション」
を参照してください。
Unixにおいて、MySQLプログラムは次のファイルからスタートアップオプションを解読します。
| ファイル名 | 目的 |
/etc/my.cnf |
グローバルオプション |
$MYSQL_HOME/my.cnf |
サーバ固有のオプション |
defaults-extra-file |
--defaults-extra-file=で指定されたファイル(あれば) |
~/.my.cnf |
ユーザ固有のオプション |
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.1ではDATADIRのmy.cnfファイルのロケーションとしての使用は認証されていません。BASEDIR
の方が良い場所です。
一般的にDATADIRは/usr/local/mysql/dataでバイナリインストールに、または/usr/local/varでソースインストールに使用されます。これはコンフィグレーションタイムに特定されたデータディレクトリロケーションであって、mysqldが起動したときの--datadirオプションに呼応しているのではないということに注意してください。--datadirの起動時の使用はサーバがオプションファイルを探す際に何の影響ももたらしません。
これはサーバがオプションを処理する前にオプションファイルを探すからです。
MySQLは指示された通りの順序でオプションファイルを探し、その中で存在するものを解読します。もし使用したいオプションファイルが存在しなければ、プレーンテキストエディタで新しく作ってください。
与えられたオプションに対して複数のインスタンスが挙がった場合には、最後のものが優先されます。ここでの唯一の例外は:mysqldに対して、--userオプションの最初のインスタンスがセキュリティー上用心のため使用され、オプションファイルのユーザ固有タイプがコマンドラインで優先されるのを防ぎます。
注記 :Unixのプラットフォームでは、MySQLは全世界から書き込み・書き取り可能なコンフィグレーションファイルを認知しません。これは故意に行われており、セキュリティー対策です。
MySQL起動時にコマンドラインにおいて与えられるロングオプションは、その全てがオプションファイルにも送られる可能性があります。プログラムに対して使用可能な存在するオプションのリストを入手するには、--helpオプションを使用してプログラムを起動してください。
オプションファイルへとオプションを特定するための構文はコマンドラインの構文と似通っており、異なる点は頭のダブルダッシュを省略するというところだけです。例えば、コマンドラインにおける--quickまたは--host=localhostは、quickまたはhost=localhostとしてオプションファイル内に指定されます。--loose-という形のオプションをオプションファイルに指定するには、opt_nameloose-という形で入力します。
opt_name
オプションファイルでは空白のラインは認識されません。空白でないラインは次のいづれかの形を取ります。
#,
comment;
comment
コメントラインは ‘#’
または
‘;’で始まります。‘#’
コメントはラインの真ん中からスタートすることもできます。
[
group]
groupとはプログラムの名前、またはオプションをセットしたいグループを示します。グループラインの後には、オプションファイル、あるいは別のグループラインの端が与えられるまで、オプションをセットするラインは全て指定されたグループに当てはまります。
opt_name
これはコマンドラインの--と同じです。
opt_name
opt_name=value
これはコマンドラインの--と同じです。オプションファイルでは‘opt_name=value=’の周囲にスペースをおくこともできますが、これはコマンドラインでは適切な操作ではありません。シングル、またはダブルの引用符で閉じることができ、これはコメントラインが‘#’、またはスペースを含んでいる場合に有効です。
数値の値をとる変数については、値は、1024、10242乗または10243乗、それぞれの乗数を示すために、K、MあるいはG(大文字か小文字のいずれか)の接尾辞で与えることができます。例えば次のコマンドはmysqladminへサーバに1024回pingを打つように、そして各pingの間それぞれ10秒ずつ間を空けるようにと命令します。
mysql> mysqladmin --count=1K --sleep=10 ping
ブランクのリードと追跡はオプション名とその値から自動的に削除されます。バックスペース、タブ、復帰改行、キャリッジリターン、バックスラッシュおよびスペース文字を表わすために、オプション値の中でエスケープシーケンス‘\b’、‘\t’、‘\n’、‘\r’、‘\\’、および
‘\s’を使用することもできます。
‘\\’
エスケープシーケンスが単一のバックスラッシュを表わすので、‘\\’として各‘\’を書かなければなりません。選択肢としては、パスネームセパレータとして‘\’ではなく‘/’を使用して、値を指定することができます。
オプショングループ名がプログラム名と同じである場合、グループ中のオプションは特定のそのプログラムに当てはまります。例えば、[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.0]、[mysqld-5.1]などの名前を備えたグループの使用により可能になります。次のグループは次のことを示します--newオプションは5.1.xバージョン番号を持ったMySQLサーバによってのみ使用される必要があります。
[mysqld-5.1] new
MySQL
5.0.4から始め、オプションファイルを求めて特定のディレクトリを探索する他のオプションファイル、および!includedirを含むようにオプションファイルの中で!include指令を使用することができます。例えば、/home/mydir/myopt.cnfファイルを含むためには次の指令を使用することができます。
!include /home/me/myopt.cnf
/home/mydirディレクトリを探し出し、見つかったオプションファイルを解読するためにはこの指令を使います。
!includedir /home/mydir
注記
:一般的に、Unixオペレーティングシステム上で見つけることができ、!includedir指令の使用が含まれているファイルの全てが、.cnfで終わるファイル名を持っていなければいけません。Windowsにおいては、この指令が.iniか.cnf拡張を備えたファイルをチェックします。
付属のファイルから解読されたオプションは、一般的なオプショングループのコンテキストに適用されることに注意してください。my.cnfに次のラインを書かなければならないと仮定してください。
[mysqld] !include /home/mydir/myopt.cnf
この場合、myopt.cnfファイルはサーバ用にのみ処理されます。
また、!include指令は全てのクライアントアプリケーションによって無視されます。しかし、次のラインを使用したならば、ディレクトリ/home/mydir/my-dump-optionsは、サーバによって、あるいは他のクライアントアプリケーションによってではなく、mysqldumpのみによってオプションファイルのチェックが行われます。
[mysqldump] !includedir /home/mydir/my-dump-options
ソース分配を持っていれば、support-filesディレクトリ中にmy-という名前のサンプルオプションファイルが見つかります。バイナリ分配の場合は、MySQLインストールディレクトリの下でxxxx.cnfsupport-filesディレクトリの中を見てください。Windowsにおいては、サンプルオプションファイルはMySQLインストールディレクトリに置かれていることがあります(この章の前半、どこのことか分からない場合には章 2. MySQL のインストールと更新を参照してください)。一般的に、小さな、ミディアム、大きな、また大規模システムのためのサンプルオプションファイルがあります。これらのファイルのうちのひとつで実験するには、Windows上でC:\my.cnfに、あるいはUnix上のホームディレクトリ中にある.my.cnfにコピーしてください。
注記
:Windowsにおいては、.cnfか.iniオプションファイル拡張が表示されない可能性があります。
オプションファイルをサポートするMySQLプログラムは全て、次のオプションを扱い、オプションファイル取り扱いに影響します。したがって、これらはオプションファイル中でではなくコマンドライン上で与えられる必要があります。適切な動作のためには、これらのオプションの各々は速やかにコマンド名に続かなければなりません。
ここでの例外として、--print-defaultsは--defaults-fileまたは--defaults-extra-file直後に使用することができます。また、望み通りに解釈されないかもしれないので、ファイル名を指定する場合‘~’シェルメタ文字の使用は回避するべきです。
どんなオプション・ファイルも読まないでください。
オプションファイルから得るプログラム名、および全てのオプションを印刷してください。
与えられたオプションファイルだけを使用してください。file_nameはファイルへのフルパスネームです。ファイルが存在しないかアクセス不能な場合、プログラムはエラーメッセージとともに終了します。
--defaults-extra-file=
file_name
グローバルなオプションファイルの後に、しかし(Unix上では)ユーザオプションファイルの前にこのオプションファイルを読んでください。file_nameはファイルへのフルパスネームです。ファイルが存在しないかアクセス不能な場合、プログラムはエラーメッセージとともに終了します。
このオプションが与えられる場合、プログラムは通常のオプショングループだけでなく通常の名前、およびstrの接尾辞を備えたグループも解読します。例えば、mysqlクライアントは通常[client]および[mysql]グループを解読します。--default-group-suffix=_otherオプションが与えられた場合には、mysqlはさらに[client_other]および[mysql_other]グループも解読します。
シェルスクリプトでは、オプションファイルを解析するmy_print_defaultsプログラムを使用し、オプションが与えられたプログラムによって何に使用されるか確かめることができます。次の例は、[client]および[mysql]グループで見つかったオプションを表示するように依頼された時、my_print_defaultsによって生産される可能性のある出力を示しています。
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
開発者への注意:オプションファイル取り扱いは、単純に適切なグループ中で、または任意のコマンドライン引数の前でオプションを全て処理することにより、Cクライアントライブラリで実行されます。複数回指定されるオプションの最後のインスタンスを使用するプログラムにとって、これは有効な方法です。複数回指定されるオプションをこの方法で扱うが、オプションファイルを解読しないCまたはC++のプログラムを持っている場合、この機能を使えるようにするためにはたった2行のラインを加えればよいだけです。この方法を確認するには、スタンダードMySQLクライアントのうちのいずれかのソースコードをチェックしてください。
MySQLへの他の言語インターフェースのうちのいくつかはCクライアントライブラリに基づいています。 またその中には、オプションファイルのコンテンツへアクセス方法が提供されているものもあります。これらはPerlとPythonを含んでいます。詳細については、手持ちのインターフェースにとって好ましい使用説明を参照してください。
