他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

18.2. データベースの作成

データベースを作成する場合、PostgreSQLサーバが起動している必要があります(項16.3を参照してください)。

CREATE DATABASE SQLコマンドでデータベースを作成することができます。

CREATE DATABASE name;

ここで、nameSQL識別子の通常の規則に従います。 現在のユーザが自動的に新しいデータベースの所有者になります。 作成後、データベースを削除する権限はこの所有者にあります(この作業では、そのデータベースに属している、所有者のものではないオブジェクトでも、全て削除されます)。

データベースの作成は制限された作業です。 権限の付与に関する詳細は項17.2を参照してください。

CREATE DATABASEコマンドを実行するためには、データベースサーバに接続している必要があります。 そうすると、まずあるサイトの最初のデータベースはどのようにして作成するのかという疑問が出てきます。 最初のデータベースは initdb コマンドでデータ格納領域が初期化される時必ず作成されます (項16.2 を参照してください)。 このデータベースはtemplate1 と呼ばれます。 従って、最初の"本当の"データベースを作成するにはtemplate1に接続してください。

template1という名前には理由があります。 新しいデータベースが作成されたら、実際にテンプレートデータベースが複製されます。 従って、template1に変更を与えるとその後に作成されるデータベース全てにその変更が反映されます。 つまり、実際の作業で、その効果が有効である場合以外はテンプレートデータベースを実際に使用することは避けてください。 詳細については 項18.3 を参照してください。

簡便性のために、シェルからcreatedbを実行して、新しいデータベースを作成することができます。

createdb dbname

createdbは魔法ではありません、 それはtemplate1データベースに接続し、先に解説した通りにCREATE DATABASEコマンドを実行します。 createdbのリファレンスページに起動の詳細が説明されています。 また、引数のないcreatedbは現在のユーザ名のデータベースを作成しますので、注意してください。 これは希望するものであるかもしれませんし、希望しないものかもしれません。

注意: 特定のデータベースに誰が接続できるかを制限する方法については第19章に記載されています。

他のユーザのためにデータベースを作成する場合も考えられます。 データベースをそのユーザが自分で設定して管理できるように、そのユーザを新しいデータベースの所有者とする必要があります。 そのためには、次のコマンドのいずれかを使用します。 SQL環境からであれば前者を、さもなくば後者を使用してください。

CREATE DATABASE dbname OWNER username;

createdb -O username dbname

他のユーザのためにデータベースを作成するには、スーパーユーザである必要があります。