通常、mysqld オプションはオプション設定ファイルから管理してください。
See 項4.1.2. 「my.cnf オプション設定ファイル」。
mysqld と mysqld.server は mysqld グループと server グループからオプションを読み込みます。 mysqld_safe は mysqld、server、mysqld_safe、safe_mysqld の各グループからオプションを読み込みます。 組み込み MySQL サーバは通常、server、embedded、および xxxxx_SERVER からオプションを読み込みます。ここで、xxxxx はアプリケーションの名前です。
mysqld には、多くのコマンドラインオプションがあります。以下、一般的なコマンドラインオプションについて説明します。 完全なオプション一覧を参照するには、mysqld --help を実行してください。
レプリケーション用のオプションについては、別のセクションで説明します。項4.11.6. 「レプリケーションスタートアップオプション」 を参照してください。
--ansi
MySQL 構文ではなく、SQL-99 構文を使用する。 See 項1.8.2. 「ANSI モードでの MySQL の実行」。
-b, --basedir=path
インストールディレクトリのパス。すべてのパスは通常、このパスからの相対パスで解決される。
--big-tables
すべてのテンポラリセットをファイルに保存することにより、大きな結果セットを可能にする。これによりほとんどの 'table full' エラーが解決されるが、メモリ内テーブルだけで事足りるクエリの実行速度も遅くなる。MySQL バージョン 3.23.2 以降、小さなテンポラリテーブルの場合はメモリを使用し、必要に応じて自動的にディスクテーブルに切り替わるようになっている。
--bind-address=IP
バインドする IP アドレス。
--console
--log-error が指定されている場合でも、stderr/stdout にエラーログメッセージを書き込む。このオプションを使用した場合、Windows では mysqld によりコンソール画面が開かれたままになる。
--character-sets-dir=path
キャラクタセットが格納されているディレクトリ。 See 項4.7.1. 「データおよびソート用キャラクタセット」。
--chroot=path
起動時に chroot 環境に mysqld デーモンを配置する。MySQL 4.0 以降の推奨セキュリティ設定(MySQL 3.23 では、完全に閉じた chroot ジェイルを提供できない)。
ただし、LOAD DATA INFILE と
SELECT ... INTO OUTFILE に制約が加わる。
--core-file
mysqld が異常終了した場合に、コアファイルを作成する。システムによっては、mysqld_safe に --core-file-size を指定することも必要になる。
See 項4.8.2. 「mysqld_safe(mysqld のラッパ)」。
注意: --user オプションも使用している場合、Solaris などシステムではコアファイルを作成できない。
-h, --datadir=path
データベースルートのパス。
--debug[...]=
MySQL を --with-debug でコンフィギャしている場合、このオプションを使用して mysqld の動作を示すトレースファイルを取得できる。
See 項E.1.2. 「トレースファイルの作成」。
--default-character-set=charset
デフォルトのキャラクタセットを設定する。 See 項4.7.1. 「データおよびソート用キャラクタセット」。
--default-table-type=type
デフォルトのテーブル型を設定する。 See 章?7. MySQL のテーブル型。
--delay-key-write[= OFF | ON | ALL]
MyISAM で、DELAYED KEYS をどのように使用するか指定する。 See 項5.5.2. 「サーバパラメータのチューニング」。
--delay-key-write-for-all-tables(MySQL 4.0.3 では、--delay-key-write=ALL を使用)
すべての MyISAM テーブルにおいて、書き込み間のキーバッファをフラッシュしない。
See 項5.5.2. 「サーバパラメータのチューニング」。
--des-key-file=filename
DES_ENCRYPT() および DES_DECRYPT() が使用するデフォルトキーをこのファイルから読み取る。
--enable-external-locking(以前は --enable-locking)
システムロックを有効にする。注意: lockd が完全には機能しないシステム(Linux など)でこのオプションを使用すると、mysqld がデッドロックになる可能性が高くなる。
--enable-named-pipe
名前付きパイプのサポートを有効化する(Windows NT/2000/XP のみ)。
-T, --exit-info
mysqld サーバのデバッグに使用できる、複数の異なるフラグのビットマスク。完全に理解していない限り、このオプションは使用しないこと。
--flush
各 SQL コマンド実行後、ディスクへの変更をすべてフラッシュする。通常、MySQL は各 SQL コマンドの後、ディスクへの変更の書き込みだけを行い、ディスクへの同期処理はオペレーティングシステムに任せる。 See 項A.4.1. 「MySQL が何度もクラッシュする場合に行うこと」。
-?, --help
ショートヘルプを表示して終了する。
--init-file=file
起動時に、このファイルから SQL コマンドを読み取る。
-L, --language=...
クライアントエラーメッセージに使用する言語。フルパスで指定できる。 See 項4.7.2. 「英語以外のエラーメッセージ」。
-l, --log[=file]
接続とクエリをログファイルに記録する。 See 項4.10.2. 「一般クエリログ」。
--log-bin=[file]
データを変更するクエリをすべてログファイルに記録する。バックアップおよびレプリケーション用に使用する。 See 項4.10.4. 「バイナリログ」。
--log-bin-index[=file]
バイナリログファイル名のインデックスファイル。 See 項4.10.4. 「バイナリログ」。
--log-error[=file]
エラーメッセージおよびスタートアップメッセージをこのログファイルに記録する。 See 項4.10.1. 「エラーログ」。
--log-isam[=file]
ISAM および MyISAM の変更をすべてログファイルに記録する(ISAM および MyISAM のデバッグ時のみ使用)。
--log-long-format
追加情報をログファイルに記録する(更新ログ、バイナリ更新ログ、スロークエリログなど、有効化されているすべてのログ)。たとえば、クエリのユーザ名とタイムスタンプが記録される。--log-slow-queries と --log-long-format を使用している場合、インデックスを使用しないクエリも、スロークエリログに記録される。
注意: --log-long-format は MySQL バージョン 4.1 で廃止され、--log-short-format が導入されている(long log format がバージョン 4.1 以降のデフォルト設定になった)。また、MySQL 4.1 から、インデックスを使用しないクエリをスロークエリログに記録するための --log-queries-not-using-indexes オプションが利用可能になっている。
--log-queries-not-using-indexes
このオプションを --log-slow-queries と一緒に使用すると、インデックスを使用しないクエリも、スロークエリログに記録される。このオプションは MySQL 4.1 で導入された。 See 項4.10.5. 「スロークエリログ」。
--log-short-format
ログファイル(更新ログ、バイナリ更新ログ、スロークエリログなど、有効化されているすべてのログ)に記録される情報が少なくなる。たとえば、クエリのユーザ名とタイムスタンプが記録されなくなる。このオプションは MySQL 4.1 で導入。
--log-slow-queries[=file]
実行時間が long_query_time 秒を超えたクエリをすべてログファイルに記録する。
注意: 記録されるデフォルトの情報量は MySQL 4.1 で変更された。詳細については、--log-long-format オプションおよび --log-long-format オプションの説明を参照のこと。 See 項4.10.5. 「スロークエリログ」。
--log-update[=file]
指定がなければ、更新を file.# に記録する。# は一意の番号。 See 項4.10.3. 「更新ログ」。
更新ログは MySQL 5.0 で廃止されるので、代わりにバイナリログ(--log-bin)を使用すること。 See 項4.10.4. 「バイナリログ」。 バージョン 5.0 からは、--log-update を使用すると単にバイナリログが有効になる。
--low-priority-updates
テーブル編集操作(INSERT、DELETE、UPDATE)の優先順位が選択よりも低くなる。{INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ... を使用して 1 つのクエリだけ優先順位を低くしたり、SET LOW_PRIORITY_UPDATES=1 を使用して 1 つのスレッド内での優先順位を変更することもできる。 See 項5.3.2. 「テーブルロック関連の問題」。
--memlock
メモリ内の mysqld プロセスをロックする。これは、使用しているシステムが mlockall() システムコールをサポートしている場合(Solaris など)のみで使用可能。オペレーティングシステムが原因で mysqld のスワップが発生するという問題がある場合、その解決に役立つ。
注意: このオプションを使用するには、サーバを root として起動することが必要になるが、これはセキュリティ上好ましくない。
--myisam-recover [=option[,option...]]
オプションは、DEFAULT、BACKUP、FORCE、および QUICK の任意の組み合わせ。このオプションを無効にするには、これを明示的に "" に設定する。このオプションを使用すると、mysqld はテーブルを開くときに、テーブルにクラッシュのマークが付いていないか、つまりテーブルが正しく閉じられているかどうかをチェックする (最後のオプションは、--skip-external-locking を使用している場合だけ有効)。テーブルにクラッシュマークが付いていた場合、mysqld はテーブルをチェックする。テーブルが破損していた場合、mysqld は修復を試みる。
以下のオプションにより、修復方法が決定される。
| オプション | 説明 |
| DEFAULT | --myisam-recover でどのオプションも指定しないのと同じ。
|
| BACKUP | 修復時にデータテーブルが変更された場合、table_name.MYD データファイルのバックアップを table_name-datetime.BAK として保存する。
|
| FORCE | .MYD ファイルから複数のレコードが失われる場合でも修復を実行する。 |
| QUICK | 削除ブロックがない場合、テーブル内のレコードをチェックしない。 |
テーブルを自動的に修復する前に、MySQL はそのことをエラーログに追加する。ユーザの介入なしにほとんどすべての問題をリカバリできるようにするには、オプション BACKUP,FORCE を使用する。これにより、いくつかのレコードが削除される場合でもテーブルの修復が行われるが、古いデータファイルがバックアップとして残るので後で調べることができる。
--new
バージョン 4.0.12 から使用可能となったオプション。--new オプションを使用すると、特定の局面でサーバを 4.1 のように動作させることができ、簡単に 4.0 から 4.1 にアップグレードできる。
TIMESTAMP が、'YYYY-MM-DD HH:MM:SS' 形式の文字列として返る。
See 項6.2. 「カラム型」。
--pid-file=path
mysqld_safe によって使用される PID ファイルのパス。
-P, --port=...
TCP/IP 接続をリッスンするポート番号。
-o, --old-protocol
非常に古いクライアントとの互換性のために 3.20 プロトコルを使用する。 See 項2.5.5. 「バージョン 3.20 から 3.21 へのアップグレード」。
--one-thread
1 スレッドのみ使用する(Linux でのデバッグ用)。 このオプションは、サーバのデバッグが有効になっている場合のみ使用可能。 See 項E.1. 「MySQL サーバのデバッグ」。
--open-files-limit=
mysqld で使用可能なファイル記述子の数を変更できる。
これが設定されていないか、または 0 に設定されている場合、mysqld は、setrlimit() で使用する値を使用してファイル記述子を予約する。この値が 0 の場合、mysqld は max_connections*5 または max_connections + table_cache*2 のいずれか大きい値をファイル数として予約する。mysqld で ' Too many open files ' のエラーが出る場合、この値を大きくする。
-O, --set-variable=name=value
変数に値を設定する。--help により変数一覧を表示できる。すべての変数の詳細については、このマニュアルの SHOW VARIABLES セクションを参照のこと。 See 項4.6.8.4. 「SHOW VARIABLES」。
これら変数を最適化する方法については、「サーバパラメータのチューニング」セクションを参照のこと。
注意: --set-variable=変数名=値 および -O 変数名=値 構文は、MySQL 4.0 で廃止。代わりに --変数名=値 を使用すること。
See 項5.5.2. 「サーバパラメータのチューニング」。
MySQL 4.0.2 では変数を --変数名=値 で直接設定できるので、set-variable は必要なくなった。
SET で設定可能なスタートアップオプションの最大値を制限するには、--maximum-variable-name コマンドラインオプションを使用して定義する。 See 項5.5.6. 「SET 構文」。
注意: 変数に値を設定すると、その値が設定可能範囲に収まるように、また使用アルゴリズムに合うように自動的に変数値が修正される。
--safe-mode
いくつかの最適化ステージをスキップする。
--safe-show-database
このオプションを使用して SHOW DATABASES コマンドを実行すると、そのユーザが何らかの権限を持っているデータベースのみが戻り値として返る。
バージョン 4.0.2 からすべてのユーザが SHOW DATABASES 権限を持つようになったので、このオプションは廃止され、何もしない(このオプションはデフォルトで有効)。 See 項4.4.1. 「GRANT および REVOKE の構文」。
--safe-user-create
これを有効にした場合、ユーザに mysql.user テーブルあるいはそのテーブル内のカラムへの INSERT 権限がなければ、そのユーザは GRANT コマンドを使用して新規ユーザを作成できない。
--skip-bdb
BDB テーブルの使用を無効にする。メモリの節約および演算処理のスピードアップに役立つ。
--skip-concurrent-insert
MyISAM テーブルで SELECT と INSERT を同時に実行できなくする(これは、この機能にバグがあると思われる場合だけ使用すること)。
--skip-delay-key-write
MySQL 4.0.3 では、代わりに --delay-key-write=OFF を使用する。
すべてのテーブルの DELAY_KEY_WRITE オプションを無視する。
See 項5.5.2. 「サーバパラメータのチューニング」。
--skip-grant-tables
サーバが一切の権限システムを使用しないようにする。これによりすべての人が、すべてのデータベースにフルアクセスできるようになる(実行中のサーバに権限テーブルを再び使用させるには、mysqladmin flush-privileges または mysqladmin reload を実行する)。
--skip-host-cache
IP への名前解決に、ホスト名キャッシュを使用せず、接続ごとに DNS サーバに対しクエリを発行する。 See 項5.5.5. 「MySQL の DNS の使用」。
--skip-innodb
Innodb テーブルの使用を無効にする。メモリとディスク領域の節約および演算処理のスピードアップに役立つ。
--skip-external-locking(以前は --skip-locking)
システムロックを使用しない。isamchk または myisamchk を使用するには、サーバをシャットダウンする必要がある。 See 項1.2.3. 「MySQL の安定性」。
注意: MySQL バージョン 3.23 では、REPAIR および CHECK を使用して MyISAM テーブルを修復したりチェックすることができる。
--skip-name-resolve
ホスト名を解決しない。権限テーブルの Host カラムの値がすべて IP アドレスまたは localhost であることが必要である。 See 項5.5.5. 「MySQL の DNS の使用」。
--skip-networking
TCP ポートを一切リッスンしない。mysqld とのやり取りはすべて、名前付きパイプまたは Unix ソケットを介して行う必要がある。ローカルからの接続要求のみが許可されているシステムにおいて、特にこのオプションが推奨される。 See 項5.5.5. 「MySQL の DNS の使用」。
--skip-new
新しくて間違っている可能性のあるルーチンを使用しない。
--skip-symlink
4.0.13 で廃止。代わりに --skip-symbolic-links を使用すること。
--symbolic-links, --skip-symbolic-links
シンボリックリンクのサポートを有効または無効にする。このオプションは、Windows と Unix では効果が異なる。
Windows でシンボリックリンクを有効にすると、実際のディレクトリへのパスが含まれる directory.sym ファイルの作成により、データベースディレクトリへのシンボリックリンクを作成できるようになる。
See 項5.6.1.3. 「Windows 上のデータベースに対するシンボリックリンクの使用」。
Unix でシンボリックリンクを有効にすると、CREATE TABLE ステートメントの INDEX DIRECTORY オプションまたは DATA DIRECTORY オプションで MyISAM のインデックスファイルまたはデータファイルを別ディレクトリにリンクできるようになる。テーブルを削除したり名前を変更すると、そのシンボリックリンクがポイントするファイルも削除または名前変更される。
--skip-safemalloc
MySQL を --with-debug=full でコンフィギャしていれば、すべてのプログラムが、メモリの割り当て時と解放時に必ずメモリのオーバーランをチェックする。このチェックには時間がかかるため、このチェックを行わないで済むサーバに対しては、--skip-safemalloc オプションによりチェックをスキップできる。
--skip-show-database
ユーザが SHOW DATABASES 権限を持っていない場合に、SHOW DATABASES コマンドを無効にする。
--skip-stack-trace
スタックトレースを書き込まない。このオプションは、デバッガで mysqld を実行するときに役立つ。システムによっては、コアファイルを取得するためにこのオプションの使用が必要な場合もある。 See 項E.1. 「MySQL サーバのデバッグ」。
--skip-thread-priority
応答時間を短くするため、スレッド優先度の使用を無効にする。
--socket=path
Unix では、ローカル接続に使用するソケットファイル(デフォルトでは /tmp/mysql.sock)。
Windows では、名前付きパイプを使用するローカル接続用パイプ名(デフォルトでは MySQL)。
--sql-mode=value[,value[,value...]]
オプション値として、次の任意の組み合わせを設定できる。
REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、ONLY_FULL_GROUP_BY、NO_UNSIGNED_SUBTRACTION、NO_AUTO_VALUE_ON_ZERO、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_KEY_OPTIONS、NO_DIR_IN_CREATE、MYSQL323、MYSQL40、DB2、MAXDB、MSSQL、ORACLE、POSTGRESQL、および ANSI。
リセットするには、値を空白にする(--sql-mode="")。
NO_AUTO_VALUE_ON_ZERO は、AUTO_INCREMENT カラムの処理に影響を与える。通常、NULL または 0 のいずれかをカラムに挿入することにより、カラムの次のシーケンス番号を生成する。
NO_AUTO_VALUE_ON_ZERO を指定すると、0 のこの働きが抑制されるため、NULL だけが次のシーケンス番号を生成することになる。このモードは、0 がテーブルの AUTO_INCREMENT カラムに保存されている場合に役に立つ(これは推奨されている方法ではないが)。たとえば、mysqldump でテーブルをダンプしてから再読み込みした場合、MySQL は通常、0 値に遭遇したときに新規シーケンス番号を生成するため、ダンプされたテーブルと再読み込みしたテーブルの内容が異なる結果になる。この場合、ダンプしたファイルを再読み込みする前に NO_AUTO_VALUE_ON_ZERO を有効にするとこの問題が解決する(このオプションが使用可能になった MySQL 4.1.1 以降、mysqldump によるダンプ出力には、自動的に NO_AUTO_VALUE_ON_ZERO を有効にするためのステートメントが含まれている)。
他のサーバとの互換性のために使用するオプション値もある。
これらを指定することにより、SHOW CREATE TABLE の実行結果から、以前のバージョンの MySQL または他のデータベースサーバが理解できない出力が除外される。
これらのオプション値を使用すると、CREATE TABLE ステートメントの他のサーバへの移植性が高まる。
NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_DIR_IN_CREATE、および NO_KEY_OPTIONS を使用すると、テーブルオプションや、カラムまたはインデックス定義に関するオプションが除外される。
MYSQL323 と MYSQL40 は、MySQL 3.23 と MySQL 4.0 との互換用。
他のサーバとの互換性を維持するための値は、DB2、MAXDB、MSSQL、ORACLE、および POSTGRESQL。
mysqldump は SHOW CREATE TABLE を使用して、ダンプ出力に含むテーブル作成ステートメントを取得するため、これらのオプションは mysqldump の出力にも影響する。
オプション値のいくつかは、値のセットまたはグループの略称なので、影響は複雑になる。
たとえば、--sql-mode=ANSI(または --ansi)オプションを使用して、サーバに ANSI モードで実行するように命令できる。これは以下のコマンドラインオプションを両方指定するのと同じ。
--sql-mode=REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY --transaction-isolation=SERIALIZABLE
注意: この方法で ANSI モードを指定すると、トランザクション分離レベルを設定することにもなる。 ANSI モードでのサーバの実行については、項1.8.2. 「ANSI モードでの MySQL の実行」 を参照のこと。
他の ``グループ'' 値は、DB2、MAXDB、MSSQL、ORACLE、および POSTGRESQL。
これらのいずれの値を指定しても、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、および NO_KEY_OPTIONS 値が有効になる。
--sql-mode オプションは MySQL 3.23.41 で追加された。
NO_UNSIGNED_SUBTRACTION 値は 4.0.0 で追加された。
NO_DIR_IN_CREATE は 4.0.15 で追加された。
NO_AUTO_VALUE_ON_ZERO、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_KEY_OPTIONS、MYSQL323、MYSQL40、DB2、MAXDB、MSSQL、ORACLE、POSTGRESQL、および ANSI は 4.1.1 で追加された。
--temp-pool
このオプションを使用すると、サーバによって作成される大部分のテンポラリファイルが、それぞれ一意の名前ではなく、小さな名前のセットを使用する。これは、多くの新規ファイルが異なる名前で作成され、それを Linux カーネルが処理する問題を回避するためである。Linux では、メモリがディスクキャッシュではなく、ディレクトリエントリキャッシュに割り当てられるため、以前の動作ではメモリの ``リーク'' が発生しやすい。
--transaction-isolation={ READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE }
デフォルトのトランザクション分離レベルを設定する。
See 項6.7.6. 「SET TRANSACTION 構文」。
-t, --tmpdir=path
テンポラリファイルの作成に使用されるディレクトリのパス。テンポラリファイルを保存するには小さすぎるパーティション上にデフォルトの /tmp ディレクトリがある場合、このオプションが役に立つ。
MySQL 4.1 以降、複数のパスの指定が可能になっている。これらのパスはラウンドロビン方式で使用される。Unix ではコロン(':')を、Windows ではセミコロン(';')を使用してパスを区切る。
メモリベースのファイルシステムを指すように tmpdir を設定することは可能。ただし、MySQL サーバがスレーブの場合はできない。スレーブの場合、マシンがリブートしてもテンポラリテーブルのレプリケーションまたは LOAD DATA INFILE のレプリケーション処理を続行するためのテンポラリファイルが必要となる。そのため、マシンのリブートで消去されるメモリベースの tmpdir は適しない。ディスクベースの tmpdir が必要。
-u, --user={user_name | user_id}
mysqld サーバを、ユーザ名 user_name またはユーザ ID user_id を持つユーザとして実行する
(ここでの ``ユーザ'' は、権限テーブルにリストされた MySQL ユーザではなく、システムログインアカウントを指す)。
このオプションは、mysqld を root アカウントで起動する場合、必須である。
起動シーケンス中にサーバがそのユーザ ID を変更し、root ではなく、その特定のユーザとして実行する。
See 項4.3.2. 「MySQL のクラッカー対策」。
MySQL 3.23.56 および 4.0.12 以降では、
ユーザが --user=root オプションを my.cnf ファイルに追加するという(結果、サーバは root として稼動)セキュリティホールを回避するため、mysqld は指定された最初の --user オプションだけを使用し、複数の --user オプションがあった場合は警告を出力する。/etc/my.cnf および datadir/my.cnf 内のオプションは、コマンドラインオプションの前に処理されるため、--user オプションを /etc/my.cnf に含めて root 以外の値を指定することを推奨する。/etc/my.cnf 内のオプションは他の --user オプションより先に検出され、サーバは確実に root 以外のユーザとして実行され、他の --user オプションが検出されると警告が出力される。
-V, --version
バージョン情報を表示して終了する。
-W, --log-warnings
Aborted connection... などの警告を .err ファイルに出力する。レプリケーションを使用する場合は、このオプションを有効にすることを推奨する(ネットワークエラーや再接続に関するメッセージなど、現在何が起こっているかについての情報をより多く取得できる)。 See 項A.2.10. 「通信エラー/Aborted connection」。
このオプションは以前の --warnings。
実行中のサーバに対して、ほとんどの値を SET コマンドで変更できます。 See 項5.5.6. 「SET 構文」。