initdb

Name

initdb -- 新しい PostgreSQL のデータベースクラスタの作成

Synopsis

initdb [options...] --pgdata | -D directory

説明

initdb は新しい PostgreSQL データベースクラスタ (データベースシステム) を作成します。データベースクラスタとは、1つのサーバインスタンスで管理されるデータベースの集合です。

データベースシステムの作成に含まれる作業は、データベースのデータを保存するディレクトリの作成、 共有カタログテーブルの生成 (特定のデータベースではなく、クラスタ全体に所属するテーブル)、そして template1 データベースの作成です。 新しいデータベースを作成する際には、template1 データベースのすべての内容がコピーされます。これには組み込みのデータ型などさまざまなものを含むカタログテーブルが含まれています。

initdb は、データベースクラスタのロケールと文字セットエンコーディングを初期化します。 ロケールカテゴリの一部は、クラスタの存続期間を通して固定されているので、initdb を実行する際には正しい選択をするよう注意が必要です。 その他のロケールカテゴリは、サーバの開始後変更することができます。initdb はこれらのロケール設定を postgresql.conf 設定ファイルに書き込んでデフォルトとしますが、設定ファイルを編集すればデフォルトを変更することができます。 initdb が使用するロケールを設定するには、--locale オプションの説明を参照してください。 文字セットエンコーディングは、各データベースの作成時に個別に設定することができます。initdb は、template1 データベースのエンコーディングを決定し、これが今後他のすべてのデータベースのデフォルトとして使用されます。 デフォルトのエンコーディングを変更するには、--encoding オプションを使用します。

initdb は、サーバプロセスの所有者によって実行されなければなりません。 initdb によって作成されるファイルやディレクトリにサーバがアクセスする必要があるからです。サーバを root として実行することはできませんので、root で initdb を実行してはいけません。 (実際、これを行なおうとしても拒否されます。)

initdb は指定されたデータディレクトリを作成しようと試みますが、多くの場合、指定されたデータディレクトリの親は root なので、その権限がありません。このような場合、空のデータディレクトリを root で作成し、chown を使ってそのディレクトリの所有権限をデータベースのユーザに変えて下さい。次に su を使ってデータベースユーザとなって、initdb を実行します。

オプション

-D directory
--pgdata=directory

このオプションは、データベースシステムがどのディレクトリに格納されるべきかの指定を行います。initdb が必要とする情報はこれだけですが、環境変数 PGDATA を設定することによって、このオプションで指定する手間が省けます。 この方法は、後に同じ変数を使用してデータベースサーバ (postmaster) がデータベースディレクトリを参照できるので、効率的です。

-E encoding
--encoding=encoding

テンプレートデータベースのエンコーディングを選択します。特別に上書きされない限り、これが今後作成されるすべてのデータベースのデフォルトエンコーディングとなります。エンコード機能を使用する場合は、構築の際にこの機能を有効にしなければなりません。 その場合、このオプションのデフォルトも選択されます。

--locale=locale

データベースクラスタ用のデフォルトのロケールを設定します。 このオプションを指定しない場合は、initdb が実行されている環境のロケールが継承されます。

--lc-collate=locale
--lc-ctype=locale
--lc-messages=locale
--lc-monetary=locale
--lc-numeric=locale
--lc-time=locale

--locale と似ていますが、指定したカテゴリのロケールのみを設定します。

-U username
--username=username

データベースのスーパユーザのユーザ名を選択します。initdb を実行している実効ユーザの名前がデフォルトです。 スーパーユーザの名前はあまり重要ではありませんが、慣習的に使われている postgres を使うことを (オペレーティングシステムのユーザ名が異なる場合でも) お勧めします。

-W
--pwprompt

initdb はデータベースのスーパーユーザ権限を与えるためにパスワード入力のプロンプトを表示します。パスワード認証を行うつもりがない場合は必要ありません。そうでなくても、パスワードの設定を行わない限りパスワード認証は行われません。

この他にも、使用頻度は下がりますが、下記の引数が使用可能です。

-d
--debug

ブートストラップバックエンドからのデバッグ情報を表示し、その他にも一般の利用者にはとりたてて興味のない情報を出力します。ブートストラップバックエンドとは initdb がカタログテーブルを作成する際に使用するプログラムです。このオプションはうんざりするようなログを大量に出力します。

-L directory

データベースシステムを初期化する際にどの入力ファイルを initdb が参照すべきかを指定します。これは通常必要ありません。明示的に指定する必要がある場合は、その時に指定するよう要求されます。

-n
--noclean

デフォルトでは、initdb を実行中にエラーが発生し、データベースを完成できなかった場合に、そのエラーが発生する前に作成されたすべてのファイルを削除します。このオプションは整頓作業を制御するので、デバッグの際にはとても便利です。

環境

PGDATA

データベースシステムを保存するディレクトリを指定します。 -D オプションを使用して上書きすることができます。

関連項目

postgres, postmaster, PostgreSQL 管理者用ガイド