無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

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

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


powered by SEO.CUG.NET