サンプルデータベースの作成

PostgreSQLをインストールした後、「postgresql95-setup initdb」コマンドによりデータベースクラスタを作成しました。(詳細は「PostgreSQLの起動・停止」を参照してください。)

データベースクラスタを作成したことで、template0、template1、postgresというデータベースが自動的に作成されます。

template0とtemplate1は文字通り、テンプレートとして機能するデータベースになります。例えば、ユーザーがデータベースを新規作成しようとすると、template1がテンプレートとして使用され、新規作成したデータベースはtemplate1の内容を引き継ぐことになります。

この仕組みにより、新規でデータベースを何個も作成する際に、共通の内容(例えば、テーブルや関数)を定義しておけば、それらの定義を引き継いで新しいデータベースが作成できるというわけです。

template0は、データベースクラスタ作成直後はtemplate1とまったく同じものとなります。template0は書き込みができないため、常に初期状態が保たれます。そのため、template1に対していろいろ手を加えていけば良い訳です。

また、template1の内容を引き継がせたくないデータベースを作成したいケースが出てきた場合は、template0を基にして新規作成すれば良いです。

postgresはデフォルトの接続先データベースとなります。そのため、データベースを指定しない場合は、「postgres」データベースに対して、テーブルなどを作成することになります。

ただし、「postgres」データベースは前述のとおりデフォルトのログイン先のデータベースとして使用されるものなので、ここにユーザーが使用するデータを格納することは推奨されません。

ユーザーの作成

早速、サンプルデータベースを作成してみましょう。

その前に新規でユーザーを作成してみます。初期状態では管理ユーザーである「postgres」ユーザーしか存在しません。これでは、セキュリティの観点で望ましくありません。そこでここでは新しく「posuser」という一般ユーザーを作成します。

まず、OSの「postgres」ユーザーにスイッチします。

# su - postgres
-bash-4.2$

ユーザーを作成するには「createuser」コマンドを使用します。

-bash-4.2$ createuser posuser

続いて、今作成したユーザーを所有者として新規データベースを作成します。データベースを作成するには「createdb」コマンドを使用します。

-bash-4.2$ createdb -O posuser testdb

「-O」オプションでデータベースの所有者として「posuser」を指定しています。

最後に、データベースが正しく作成されたかどうかを確認してみましょう。確認するには「psql -l」コマンドを使用します。

-bash-4.2$ psql -l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
-----------+----------+------------------+-------------+-------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
           |          |                  |             |                   | postgres=CTc/postgres
 testdb    | posuser  | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
(4 行)

最終行に「testdb」データベースが確認できます。

データベースへのログイン

では、今作成したデータベースへログインしてみましょう。データベースへのログインは「psql」コマンドの引数にデータベース名を指定することで行えます。

-bash-4.2$ psql testdb
psql (9.5.2)
"help" でヘルプを表示します.
testdb=#

ログインに成功するとプロンプトが「testdb=#」となります。

ログアウトは「\q」もしくはCtrl+dで行えます。