1.3. データベースの作成

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

サイト管理者により使用できるデータベースが既に作成されている場合もあります。その場合、管理者は使用できるデータベースの名前を通知しなければなりません。この場合、この段階を飛ばして、次の節まで進んで下さい。

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

$ createdb mydb

これは以下の応答を生成します。

CREATE DATABASE

上のようになれば、この段階は成功し、この節の残りは飛ばすことができます。

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

createdb:command not found

インストールが全くされていないか検索パスの設定が正しくないかのいずれかです。代わりに絶対パスでそのコマンドを実行してみて下さい。

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

このパスはサイトによって異なるかもしれません。この問題を解決するには、サイト管理者に連絡するか、インストール手順に戻って点検して下さい。

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

psql:could not connect to server:Connection refused
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
createdb:database creation failed

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

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

ERROR:CREATE DATABASE:permission denied
createdb:database creation failed

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

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

$ createdb

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

$ dropdb mydb

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

Notes

[1]

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