データベースの作成

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 第 21章データベース管理 | 早送り | 次のページ

# 21.2. データベースの作成

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

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

    CREATE DATABASE name;

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

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

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

また、`template1`という2つ目のデータベースもデータベースクラスタの初期化時に作成されます。 クラスタ内に新しいデータベースが作成されたら、実際に`template1`が複製されます。 つまり`template1`に変更を与えると、その後に作成されるデータベース全てにその変更が反映されることを意味します。 このため新しく作成するデータベースすべてに反映させたい場合でない限り`template1`内にオブジェクトを作成することは避けてください。 詳細については項21.3を参照してください。

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

    createdb dbname

`createdb`は魔法ではありません。 これは`postgres`データベースに接続し、先に解説した通りに`CREATE DATABASE`コマンドを実行します。 createdbのマニュアルページに実行方法の詳細が説明されています。 引数のない`createdb`は現在のユーザ名のデータベースを作成しますので、注意してください。

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

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

    CREATE DATABASE dbname OWNER rolename;

    createdb -O rolename dbname

他のユーザのために（つまり、自身がメンバではないロールのために）データベースを作成することができるのはスーパーユーザだけです。

前のページ | ホーム | 次のページ
概要 | 上に戻る | テンプレートデータベース