mysql_install_db は MySQL データディレクトリを初期化し、システムテーブルを作成します (システムテーブルがない場合)。また、InnoDB
テーブルの管理に必要な、システムのテーブルスペースおよび関係するデータ構造体も初期化します。MySQL 5.6.8 では、mysql_install_db は Perl スクリプトで、Perl がインストールされた任意のシステムで使用できます。5.6.8 より前ではシェルスクリプトで、Unix プラットフォームでのみ使用可能です。
MySQL 5.6.8 以降では、mysql_install_db は UNIX プラットフォーム上で、my.cnf
という名前のデフォルトオプションファイルを基本インストールディレクトリに作成します。このファイルは my-default.cnf
という名前の配布パッケージに含まれるテンプレートから作成されます。テンプレートは基本インストールディレクトリ内またはその配下から見つけることができます。mysqld_safe を使用して開始すると、サーバーはデフォルトで my.cnf
ファイルを使用します。my.cnf
がすでに存在する場合、mysql_install_db はそのファイルが使用中だと認識し、my-new.cnf
という名前の新しいファイルを代わりに書き込みます。
1 つの例外を除き、デフォルトのオプションファイル内の設定はコメント化されて無効になっています。例外は、このファイルが sql_mode
システム変数を NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
に変更することです。この設定により、トランザクションテーブルを変更する操作での不良データに対して警告でなくエラーを発生させるサーバー構成が提供されます。セクション5.1.7「サーバー SQL モード」を参照してください。
mysql_install_db を呼び出すには、次の構文を使用します。
shell> mysql_install_db [options]
MySQL サーバー mysqld があとで起動されるとき、データディレクトリにアクセスしなければならないため、mysqld の起動に使用するのと同じシステムアカウントから mysql_install_db を起動するか、または root
として実行し、--user
オプションを指定して mysqld を実行するユーザー名を指示します。mysql_install_db がインストールディレクトリまたはデータディレクトリの正しい場所を使用しない場合は、--basedir
または --datadir
などの、ほかのオプションを指定しなければならない場合があります。例:
shell> scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
mysql_install_db が InnoDB
システムテーブルスペース をセットアップしたあと、テーブルスペースの特性を変更するにはまったく新しいインスタンスをセットアップする必要があります。これには、システムテーブルスペース内の最初のファイル名および undo ログの数が含まれます。デフォルト値を使用しない場合は、mysql_install_db を実行する前に、innodb_data_file_path
および innodb_log_file_size
の各構成パラメータの設定が MySQL 構成ファイル内で適切な場所にあることを確認してください。また、 innodb_data_home_dir
および innodb_log_group_home_dir
などの、InnoDB
ファイルの作成および場所に影響するその他のパラメータを、必要に応じて指定してください。
これらのオプションが構成ファイルにあるが、そのファイルが MySQL がデフォルトで読み取る場所にない場合は、mysql_install_db の実行時に --defaults-extra-file
オプションを使用してファイルの場所を指定します。
インストールを実行する際にカスタムの TMPDIR
環境変数を設定し、指定されたディレクトリにアクセスできない場合、mysql_install_db は失敗する場合があります。その場合は、TMPDIR
の設定を取り消すか、または TMPDIR
をシステムの一時ディレクトリ (通常 /tmp
) を指すように設定します。
mysql_install_db は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysql_install_db]
グループで指定できます。(mysqld に共通なオプションは、[mysqld]
グループにも指定できます。)その他のオプションは mysqld に渡されます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。
表 4.2 mysql_install_db オプション
オプション名 | 説明 | 導入 | 非推奨 |
---|---|---|---|
--basedir | ベースディレクトリへのパス | ||
--builddir | ビルドディレクトリへのパス (ソースからのビルドで) | ||
--cross-bootstrap | 内部使用 | ||
--datadir | データディレクトリへのパス | ||
--defaults-extra-file | 通常のオプションファイルに加えてオプションファイルを読み取る | ||
--defaults-file | 指名されたオプションファイルのみを読み取る | ||
--force | DNS が機能しない場合でも実行 | ||
--help | ヘルプメッセージを表示して終了 | ||
--keep-my-cnf | 既存の my.cnf file を保持し、新規に作成しない | 5.6.20 | 5.6.20 |
--ldata | --datadir のシノニム | ||
--no-defaults | オプションファイルを読み取らない | ||
--random-passwords | 管理アカウントにランダムパスワードを生成 | 5.6.8 | |
--rpm | 内部使用 | ||
--skip-name-resolve | 付与テーブルにホスト名ではなく IP アドレスを使用 | ||
--srcdir | 内部使用 | ||
--user | mysqld を実行するシステムログインユーザー | ||
--verbose | 冗長モード | ||
--windows | 内部使用 |
-
ヘルプメッセージを表示して終了します。
-
MySQL インストールディレクトリへのパス。
-
--srcdir
およびソースからのビルドとともに使用します。これは、ビルドされたファイルがあるディレクトリの場所にセットします。 -
内部使用。このオプションは、あるホスト用のシステムテーブルを別のホストでビルドするために使用されます。
-
MySQL データディレクトリへのパス。MySQL 5.6.8 以降、mysql_install_db はオプション値に関してより厳密になりました。パスが存在しない場合は、パス名の最後のコンポーネントのみが作成されます。親ディレクトリはすでに存在する必要があります。存在しない場合はエラーが発生します。
-
--defaults-extra-file=
file_name
このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。 -
指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。
file_name
は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。 -
DNS が機能しない場合でも mysql_install_db を実行します。通常ホスト名を使用して作成される付与テーブルエントリが、代わりに IP アドレスを使用します。
-
mysql_install_db に対し、既存の
my.cnf
ファイルがあれば、新しいデフォルトのmy.cnf
ファイルを作成せずに既存のものを維持するように指示します。このオプションは MySQL 5.6.20 で追加されました。 -
--datadir
のシノニム。 -
オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、
--no-defaults
を使用して、オプションを読み取らないようにすることができます。 -
Unix プラットフォームで、このオプションはよりセキュアな MySQL インストールを提供します。mysql_install_db を
--random-passwords
で起動すると、通常の動作に加えて次のアクションを実行するようになります。インストールプロセスはランダムなパスワードを作成して、それを初期 MySQL
root
アカウントに割り当て、これらのアカウントに対して「有効期限切れパスワード」フラグを設定します。-
初期のランダムな
root
パスワードは、HOME
環境変数によって指定されるディレクトリの.mysql_secret
ファイルに書き込まれます。オペレーティングシステムによっては、sudo などのコマンドを使用するとHOME
の値がroot
システムユーザーのホームディレクトリを参照するようになる場合があります。.mysql_secret
がすでに存在する場合は、新しいパスワード情報はそれに追加されます。各パスワードエントリにはタイムスタンプが含まれるため、複数のインストール操作の場合に、それぞれに関連するパスワードを判断できます。.mysql_secret
は、作成対象のシステムユーザーのみがアクセスできるように、モード 600 で作成されます。 匿名ユーザー MySQL アカウントは作成されません。
これらのアクションの結果、インストール後、サーバーを起動して
.mysql_secret
ファイルに書き込まれたパスワードを使用してroot
として接続し、新しいroot
パスワードを指定することが必要です。これを行うまで、root
はそれ以外何もできません。これは、使用するすべてのroot
アカウントについて実行する必要があります。パスワードを変更するには、SET PASSWORD
ステートメントを (たとえば mysql クライアントとともに) 使用します。mysqladmin または mysql_secure_installation も使用できます。(アップグレードではなく) 新しい RPM インストール操作は、mysql_install_db を
--random-passwords
オプションで起動します。(Unbreakable Linux Network での RPM を使用したインストール操作は mysql_install_db を使用しないため、影響されません。)MySQL 5.6.9 では、(アップグレードではなく) 新しい Solaris PKG インストール操作は、mysql_install_db を
--random-passwords
オプションで起動します。バイナリの
.tar.gz
配布またはソース配布を使用するインストール操作では、mysql_install_db を--random-passwords
オプションで手動で起動して、MySQL インストールをよりセキュアにできます。これは、機密データのあるサイトでは特に推奨されます。このオプションは MySQL 5.6.8 で追加されました。
-
内部使用。このオプションは、RPM パッケージを使用して実行されるインストール操作で、MySQL のインストールプロセス中に使用されます。
-
付与テーブルのエントリ作成時にホスト名ではなく IP アドレスを使用します。このオプションは、DNS が機能しない場合に便利です。
-
内部使用。このオプションは、mysql_install_db がエラーメッセージファイルおよびヘルプテーブルの移入用ファイルなどのサポートファイルを検索するディレクトリを指定します。
-
mysqld を実行する際に使用するシステム (ログイン) ユーザー名。mysqld によって作成されるファイルおよびディレクトリは、このユーザーが所有します。このオプションを使用するには、システム
root
ユーザーでなければなりません。デフォルトでは、mysqld は現在のログイン名を使用して稼働し、作成されるファイルおよびディレクトリはそのユーザーの所有となります。 -
冗長モード。プログラムの動作についてより多くの情報を出力します。
-
内部使用。このオプションは、Windows 配布の作成に使用されます。