25.4. PostgreSQL の起動と停止

PostgreSQL を手動で開始/停止する方法、および PostgreSQL の起動後に最低限必要となる基本設定について解説します。PostgreSQL のデーモン postmaster は、/etc/init.d/postgresql スクリプトに以下のオプションを指定することにより制御することができます。

表 25-1. 制御スクリプトオプション

オプション説明
startpostmaster デーモンを起動します。
stoppostmaster デーモンを停止します。
restartpostmaster デーモンを再起動します。
statuspostmaster デーモンの起動状況を確認します。
reload設定ファイルを再読込みします。
condrestartデーモンが動作しているかを確認後、再起動します。(/var/lock/subsys/postgresql が存在するとき再起動します。)
condstopデーモンが動作しているかを確認後、停止します。(/var/lock/subsys/postgresql が存在するとき再起動します。)
initdbデータベースクラスタが空の場合のみ初期化します。存在する時にはエラーメッセージを返します。

PostgreSQL を起動するには、以下のコマンドを実行します。

# /etc/init.d/postgresql start

PostgreSQL を停止するには、以下のコマンドを実行します。

# /etc/init.d/postgresql stop

Turbolinux 11 Server 起動時に PostgreSQL を自動的に開始するには、以下のように chkconfig コマンドを実行しておきます。

# chkconfig postgresql on

PostgreSQL の初回起動時には、データベースクラスタ(データベースを格納する領域)を作成するために、postgres ユーザーで initdb コマンドを実行します(Turbolinux 11 Server では、postgres というユーザーが自動的に登録されています)。initdb コマンドは、環境変数 PGDATA で指定されたディレクトリにデータベースクラスタを作成し、初期化を行うコマンドです。Turbolinux 11 Server のデフォルトでは、/var/lib/pgsql/.bash_profile に以下の環境変数が設定されています。

PGDATA=/var/lib/pgsql/data
export PGLIB PGDATA

これにより、標準では /var/lib/pgsql/data/ ディレクトリにデータベースクラスタが作成され、データベースのテンプレートである template0 と template1 が作成されます(これらデータベースは、あくまでもテンプレートであり、実際に使用すべきデータベースではありません)。また、initdb を実行した postgres ユーザーは、データベースクラスタのスーパーユーザーと呼ばれ、PostgreSQL の管理者となります。そして、この postgres ユーザーは、PostgreSQL のデータベースロールとしても登録され、データベースの作成や他のデータベースロールを登録する権限が付与されます。

PostgreSQL バージョン 8.2 からは以前のバージョンまでのデータベースユーザーはロールと呼ばれ、ユーザーやグループの統合のような意味合いを持ち、権限や認証に関する属性を持ちます。

注意

Linuxシステムにおけるユーザーと PostgreSQL のデータベースのロールは、まったく別のユーザーであり、区別されていますので注意してください。

新規データベースユーザーの登録やデータベースの作成は、postgres ユーザーでシステムにログインして行います。Linux システムにおける postgres ユーザーのパスワードは、初期状態では設定されていませんので、root でログインして最初にパスワードを設定する必要があります。

# passwd postgres

パスワードを設定し、postgres ユーザーでシステムへログインすると /var/lib/pgsql をホームディレクトリとしてログインします。これで、PostgreSQL を使用するための準備が整いました。データベースの作成を開始することができます。