initdb

Name

initdb  --  新しい Postgres データベースインストレーション を作成する。

Synopsis

initdb [ --pgdata|-D dbdir ]
    [ --sysid|-i sysid ]
    [ --pwprompt|-W ]
    [ --encoding|-E encoding ]
    [ --pglib|-L libdir ]
    [ --noclean | -n ] [ --debug | -d ] [ --template | -t ]
  

入力

--pgdata=dbdir, -D dbdir, PGDATA

このオプションはデータベースを Unix ファイルシステム上のど こに置くのかを指定します。 これは initdb でのみ必要とされる情報ですが、 PGDATA 環境変数を設定することで省くことがで きます。 これは、データベースサーバ (postmaster) は同じ変数を使ってデータベースディレクトリの場所を検索できま すので、便利な方法となります。

--sysid=sysid, -i sysid

データベーススーパユーザのシステムID を選択します。 initdb を実行するユーザの実効ユーザID がこのデフォルト値です。 スーパユーザのシステム ID が何かは、あまり重要なものではあり ませんが、0 や 1 といった数字を使って起動することを好むユーザ もいます。

--pwprompt, -W

initdb がデータベーススーパユーザのパスワードを問い合わせ るようになります。 パスワード認証の使用を予定していない場合、これは重要ではあ りません。 そうでない場合、パスワードの設定を行なうまで、パスワード認 証を使用することができません。

--encoding=encoding, -E encoding

テンプレートデータベースのマルチバイト符合化方式 を選択します。 これはまた、後に上書きせずに作成する全てのデータベース のデフォルトの符合化方式になります。 マルチバイト符合化機能を使用するには、構築時に使 用するように指定する必要があります。 また、この構築時にこのオプションのデフォルト値を選択し ます。

この他、以下のパラメータも使用できますが、あまり一般的に使 用されません。

--pglib=libdir, -l libdir

データベース初期化のために、initdb は 2,3 の入力ファイルを必 要とします。 このオプションを使用してその場所を指定します。 initdb は最も一般的なインストールのレイアウトを知っていますの で自分自身でこれらのファイルを探すことができます。そのため、通 常はこれを気にする必要がありません。 その場所を明示的に指定する必要があれば、その旨が伝えられます。 この場合、それらのファイルの1 つは、 global1.bki.source と呼ばれ、通常は他の ファイルと一緒にライブラリディレクトリにインストールされます。 (例えば、/usr/local/pgsql/lib です。)

--template, -t

既存データベース内の template1 データベー スを置換し、それ以外は何も変更しません。これは、より新しいリ リースの Postgres 附属の initdb を使って、 template1 データベースをアップグレードする 必要がある時や、何らかのシステム上の問題によって template1 データベースがおかしくなってしま った時に有用です。通常 template1 の内容は そのデータベースシステムができてからずっと一定に保たれていま す。--template オプションをつけた initdb の実行によって何かを壊すこ とはありません。

--noclean, -n

デフォルトでは、initdb は、エラーに よってデータベースシステムを正常に作成することができないことが 判ると、作業を完了できないことが判る前に作成していたファイルを 全て削除します。このオプションは後かたづけを全て抑制しますので、 デバッグの際に有用です。

--debug, -d

バックエンドのブートからのデバッグ用出力、その他に数は少ない のですが、一般ユーザには取り立てて興味を引かないメッセージを表示します。 バックエンドのブートは、initdb が カタログテーブルを生成する時に使用するプログラムです。 このオプションは途方もないほどの量の出力を行ないます。

出力

initdb は指定したデータ領域に、システム テーブルとフレームワークであるファイルを、インストレーション を完全にするために作成します。

説明

initdb は新しい Postgres データベースシステムを作 成します。データベースシステムとは、ある Unix ユーザによって 全てが管理され、1 つの postmaster によって処理されるデータ ベースの集合です。

データベースシステムの作成は、データベースのデータを保存するディレ クトリの作成、(特定のデータベースに全く属さないテーブルである、) 共有カタログテーブルの生成、template1 データベー スの作成から成ります。 データベースを新たに作成する時、template1 デー タベース内の全てがコピーされます。 そこには組み込み型といったものを全て含むカタログテーブルが含ま れています。

root で initdb を実行してはなりません。 データベースサーバを root として実行させることができないが、デー タベースサーバは initdb が作成したファ イルにアクセスできなければならないからです。 更にいうと、ユーザが存在せず、アクセス制御もインストールされていな い、初期化段階では、postgres は現在の Unix ユーザの名前を使ってのみ 接続します。ですので、サーバプロセスの所有者であるアカウントにログ インしなければなりません。

initdb は各自のデータディレクトリの作 成を行ないますが、そのための権限がないことがあります。 ですので、データディレクトリを initdb を実行する前に作成し、そして データベーススー パユーザにその所有権を渡すことを推奨します。