他のバージョンの文書 15 | 14 | 13 | 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

1.3. データベースの作成

データベースサーバにアクセスできるかどうかがわかる最初の試験は、データベースの作成を試みることです。 稼働中のPostgreSQLサーバは多くのデータベースを管理することができます。 典型的には、プロジェクトやユーザごとに別々のデータベースが使用されます。

サイト管理者により使用できるデータベースが既に作成されている場合もあります。 管理者から、使用できるデータベースの名前の通知があったことでしょう。 この場合、この段階を飛ばして、次の節まで進んでください。

新しいデータベースを作成するには、以下のコマンドを使用してください。 この例ではmydbという名前です。

$ createdb mydb

この手順で何も応答がなければ、この段階は成功し、本節の残りは飛ばすことができます。

以下のようなメッセージが現れた場合、PostgreSQLが正しくインストールされていません。

createdb: command not found

PostgreSQLがインストールされていないか、シェルの検索パスに含まれていないのいずれかです。 代わりに絶対パスでそのコマンドを実行してみてください。

$ /usr/local/pgsql/bin/createdb mydb

このパスはサイトによって異なるかもしれません。 この問題を解決するには、サイト管理者に連絡するか、インストール取扱説明書を調べてください。

他の応答として以下もあります。

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

これは、サーバが起動していないか、createdbが想定している状態でサーバが起動していないかを示しています。 こちらも、インストール手順を点検するか管理者に相談してください。

他の応答として以下もあります。

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist

ここでjoeのところには、ログインした時のユーザ名が記載されています。 これは、管理者がそのユーザ用のPostgreSQLユーザアカウントを作成していない時に起こります (PostgreSQLユーザアカウントは、オペレーティングシステムのユーザアカウントとは別です)。 自身が管理者なら、アカウントの作成方法に関して20章データベースロールを参照してください。 最初のユーザアカウントを作成するためには、PostgreSQLをインストールした時のオペレーティングシステムのユーザ(通常postgres)になる必要があります。 PostgreSQLユーザアカウントがオペレーティングシステムのユーザ名と異なる名前で用意されているかもしれません。 その場合は、PostgreSQLのユーザ名を指定するために、-Uスイッチを使用するか、PGUSER環境変数を設定する必要があります。

ユーザアカウントを持っているが、データベースを作成するために必要な権限を持っていない場合は、以下のメッセージが現れます。

createdb: database creation failed: ERROR:  permission denied to create database

全てのユーザがデータベースを新規に作成できる権限を持っているわけではありません。 PostgreSQLがデータベースの作成を拒否した場合、サイト管理者からデータベースを作成する権限を付与してもらう必要があります。 これが発生した場合はサイト管理者に相談してください。 自身でPostgreSQLをインストールしたのであれば、このチュートリアルを実行する時は、サーバを起動したユーザアカウントでログインしてください。 [1]

他の名前のデータベースを作成することもできます。 PostgreSQLは、与えられたサイトでいくつでもデータベースを作成することを許可しています。 データベース名は、先頭がアルファベット文字から始まる、63バイトまでの長さでなければなりません。 簡単な選択は、現在のユーザ名と同じ名前のデータベースを作成することです。 多くのツールでは、データベース名のデフォルトとしてそれを仮定していますので、これにより入力数を減らすことができます。 このデータベースを作成するには、単純に以下を実行します。

$ createdb

データベースを使用しなくなったら、削除することができます。 例えば、mydbデータベースの所有者(作成者)であれば、以下のコマンドでそれを廃棄することができます。

$ dropdb mydb

(このコマンドでは、データベース名のデフォルトはユーザアカウント名ではありません。 常に指定しなければなりません。) この動作は、そのデータベースに関する全てのファイルを物理的に削除しますので、取り消すことはできません。 事前に熟考した場合にのみこれを実施してください。

createdbdropdbの詳細は、それぞれcreatedbdropdbにあります。



[1] 何故これで上手くいくのかについての説明:PostgreSQLのユーザ名はオペレーティングシステムのユーザアカウントとは分離されています。 データベースに接続するとき、接続に利用するPostgreSQLのユーザ名を選択します。 選択しなければ、デフォルトで現在のオペレーティングシステムのアカウントと同じ名前となります。 これにより、サーバを開始したオペレーティングシステムのユーザと同じ名前のPostgreSQLユーザアカウントが、常に存在するようになっています。 そしてまた、このユーザは常にデータベースを作成する権限を持ちます。 そのユーザとしてログインする代わりに、-Uオプションを毎回使用して、接続するPostgreSQLのユーザ名を選択することができます。