createdbは、新しいPostgreSQLデータベースを作成します。
通常、このコマンドを実行したデータベースユーザが、新しいデータベースの所有者になります。 ただし、コマンドを実行するユーザが適切な権限を持っている場合、-Oオプションを使用して別のユーザを所有者に指定することができます。
createdbはCREATE DATABASEというSQLコマンドのラッパです。 したがって、このユーティリティでデータベースを作成しても、これ以外の方法でサーバにアクセスしてデータベースを作成しても何も違いはありません。
createdbでは、下記のコマンドライン引数を指定できます。
作成するデータベースの名前を指定します。 この名前はクラスタ内の全てのPostgreSQLデータベースの中で一意でなければなりません。 デフォルトでは、現在のシステムユーザと同じ名前でデータベースを作成します。
新しく作成されるデータベースに関連付けるコメントを指定します。
データベース用のデフォルトのテーブル空間を指定します。 (この名前は二重引用符で囲まれた識別子として処理されます。)
createdbが生成し、サーバに送信したコマンドをエコー表示します。
このデータベース内で使用する文字符号化方式を指定します。 PostgreSQLサーバでサポートされる文字セットについては項22.3.1で説明します。
このデータベースで使用されるロケールを指定します。 これは--lc-collateと--lc-ctypeの両方を指定することと等価です。
このデータベースで使用されるLC_COLLATE設定を指定します。
このデータベースで使用されるLC_CTYPE設定を指定します。
新しいデータベースの所有者となるデータベースユーザを指定します。 (この名前は二重引用符で囲まれた識別子として処理されます。)
このデータベースの構築に使用するテンプレートデータベースを指定します。 (この名前は二重引用符で囲まれた識別子として処理されます。)
createdbのバージョンを表示し、終了します。
createdbのコマンドライン引数の使用方法を表示し、終了します。
オプション-D、-l、-E、-O、および-Tは、基盤となるCREATE DATABASEというSQLコマンドのオプションにそれぞれ対応しています。 詳細はそちらを参照してください。
またcreatedbは、以下のコマンドライン引数を接続パラメータとして受け付けます。
サーバが稼働しているマシンのホスト名を指定します。 この値がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。
サーバが接続を監視するTCPポートもしくはUnixドメインソケットのファイル拡張子を指定します。
接続に使用するユーザ名を指定します。
パスワードの入力を促しません。 サーバがパスワード認証を必要とし、かつ、.pgpassファイルなどの他の方法が利用できない場合、接続試行は失敗します。 バッチジョブやパスワードを入力するユーザが存在しない場合にこのオプションは有用かもしれません。
データベースに接続する前に、createdbは強制的にパスワード入力を促します。
サーバがパスワード認証を要求する場合createdbは自動的にパスワード入力を促しますので、これが重要になることはありません。 しかし、createdbは、サーバにパスワードが必要かどうかを判断するための接続試行を無駄に行います。 こうした余計な接続試行を防ぐために-Wの入力が有意となる場合もあります。
新しいデータベースを作成する時の接続先となるデータベースの名前を指定します。 指定がなければ、postgresデータベースが使用されます。 もし存在しなければ(またはこれが作成しようとしているデータベースの名前であれば)template1が使用されます。
この値が設定されている場合、コマンドラインで上書きされない限り、設定された値が作成するデータベースの名前になります。
デフォルトの接続パラメータです。 コマンドラインでもPGDATABASEでも名前が指定されていない場合は、PGUSERが作成するデータベースの名前にもなります。
また、このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(項31.14を参照してください)。
問題が発生した場合、考えられる原因とエラーメッセージの説明についてCREATE DATABASEとpsqlを参照してください。 データベースサーバは対象ホストで稼働していなければなりません。 また、libpqフロントエンドライブラリで使用される、全てのデフォルトの接続設定と環境変数が適用されることも覚えておいてください。