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.

