PostgreSQL のインストール

この章では、PostgreSQL のインストールおよび設定について説明します。

PostgreSQL データベースのインストール

始める前に

手順


ステップ 1

次のコマンドを入力して、Postgres のユーザとしてデータベース サーバにサイン インします。

>su - postgres

>psql

ステップ 2

新しいデータベース ユーザを作成します。次の例では、tcuser という名前の新しいデータベース ユーザを作成しています。

#CREATE ROLE tcuser LOGIN CREATEDB;

(注)   

PostgresSQL バージョン 8.4.x を展開する場合、手順のこの時点では、データベース ユーザをスーパーユーザとして設定する必要があります。例:

#ALTER ROLE tcuser WITH SUPERUSER;

ステップ 3

データベースを作成します。データベースに ASCII 文字のみが含まれる場合、SQL_ASCII の符号化でデータベースを作成します。データベースに ASCII 以外の文字が含まれる場合、UTF8 の符号化でデータベースを作成します。

次の例では、tcmadb という名前の SQL_ASCII データベースを作成しています。

#CREATE DATABASE tcmadb WITH OWNER tcuser ENCODING 'SQL_ASCII';

ステップ 4

データベースへのユーザ アクセスを設定します。install_dir/data/pg_hba.conf ファイルを編集して、postgres ユーザと新しい tcuser ユーザがデータベースにアクセスできるようにします。次に例を示します。

# TYPE DATABASE USER CIDR-ADDRESS METHOD
ホスト tcmadb tcuser 10.89.99.0/24 password
ホスト dbinst mauser 10.89.99.0/24 password
local1 all all Trust または MD5
1 Unix ドメイン ソケット接続のみ。
ステップ 5

次のコマンドを入力して、postgres ユーザと tcuser ユーザのパスワードを定義します。

#ALTER ROLE postgres WITH PASSWORD 'mypassword';

#ALTER ROLE tcuser WITH PASSWORD 'mypassword';

(注)   

IM and Presence Service で外部データベース エントリを設定する場合は、データベース ユーザのパスワードを入力する必要があります。

ステップ 6

PostgreSQL バージョン 8.3.7 またはそれ以降の 8.3.x リリースを実行している場合は、tcuser の権限をスーパーユーザに変更して、このユーザにデータベースへのアクセスを許可します。次のコマンドを入力します。

#ALTER ROLE tcuser WITH SUPERUSER;

ステップ 7

リモート ホストからのデータベースへの接続を設定します。install_dir/data/postgresql.conf ファイルで listen_addresses パラメータを編集します。次に例を示します。

listen_addresses = '*'

ステップ 8

PostgreSQL バージョン 9.1.1 を実行している場合、postgresql.conf ファイルに次の値を設定する必要があります。

escape_string_warning = off

standard_conforming_strings = off

ステップ 9

PostgreSQL サービスを停止し、再起動します。例:

/etc/rc.d/init.d/postgresql-8.3 stop

/etc/rc.d/init.d/postgresql-8.3 start

(注)   

PostgreSQL サービスを停止および開始するコマンドは、PostgreSQL リリース間で異なる場合があります。

ステップ 10

次のコマンドを入力して、postgres ユーザとして新しいデータベースにサインインし、PL/pgSQL を有効にします。

>psql tcmadb -U postgres

(注)   

次の例のセミコロンまでは 1 行で入力する必要があります。

#CREATE FUNCTION plpgsql_call_handler () RETURNS LANGUAGE_HANDLER AS '$libdir/plpgsql' LANGUAGE C;

#CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;

トラブルシューティングのヒント

install_dir/data/postgresql.conf ファイルでは、次の設定項目をオンにしないでください(デフォルトで、これらの項目はコメント アウトされています)。

client_min_messages = log

log_duration = on


PostgreSQL リスニング ポートの設定


(注)  

この項の設定はオプションです。


デフォルトでは、Postgresql データベースはポート 5432 で待機します。このポートを変更する場合は、/etc/rc.d/init.d/postgresql で PGPORT 環境変数を新しいポート番号で編集する必要があります。


(注)  

PGPORT 環境変数は /var/lib/pgsql/data/postgresql.conf ファイルでの「ポート」パラメータ値を上書きするため、Postgresql データベースを新しいポート番号で待機させるには、PGPORT 環境変数を編集する必要があります。


手順


ステップ 1

/etc/rc.d/init.d/postgresql で PGPORT 環境変数を新しいポートで編集します。例:

IE: PGPORT=5555

ステップ 2

次のコマンドを入力して、PostgreSQL サービスを停止し、開始します。

# /etc/rc.d/init.d/postgresql start

# /etc/rc.d/init.d/postgresql stop

ステップ 3

次のコマンドを使用して、Postgresql データベースが新しいポートで待機していることを確認します。

'lsof -i -n -P | grep postg'

postmaste 5754 postgres 4u IPv4 1692351 TCP *:5555 (LISTEN)

ヒント 

IPv6 サーバの場合は、postmaste 5754 postgres 4u IPv6 1692351 TCP *:5555 (LISTEN) と入力します。

ステップ 4

ポート変更後にデータベースに接続するには、-p 引数を使用してコマンドで新しいポート番号を指定する必要があります。コマンドに -p 引数がない場合、Postgresql データベースはデフォルト ポートの 5432 の使用を試行し、データベースへの接続は失敗します。

次に例を示します。

psql tcmadb -p 5555 -U tcuser


ユーザ アクセス制限の推奨事項

外部データベースへのユーザ アクセスを、特定のユーザや IM and Presence Serivce が使用するデータベース インスタンスのみに制限することを強く推奨します。<install_dir>/data ディレクトリにある pg_hba.conf ファイルで、PostgreSQL データベースへのユーザ アクセスを制限できます。


注意    

どのようなユーザでも任意のデータベースにアクセスできるようになってしまうため、ユーザとデータベースのエントリには「all」を設定しないでください。


また、外部データベースにユーザ アクセスを設定する際に、データベース アクセスに、「パスワード」方式を使用して、パスワード保護を設定することも推奨します。


(注)  

IM and Presence Service でデータベース エントリを設定する際には、データベース ユーザのパスワードを入力する必要があります。


次に示すのは、pg_hba.conf ファイルでセキュアなユーザ アクセスを設定する例と、それほどセキュアではないユーザ アクセスを設定する例です。

セキュアな設定例:

# TYPE

DATABASE

USER

CIDR-ADDRESS

METHOD

ホスト

dbinst1

tcuser1

10.89.99.0/24

password

ホスト

dbinst2

mauser1

10.89.99.0/24

password

それほどセキュアではない設定例:

# TYPE

DATABASE

USER

CIDR-ADDRESS

METHOD

ホスト

dbinst1

tcuser1

10.89.99.0/24

trust

ホスト

dbinst2

all

10.89.99.0/24

password

それほどセキュアではない設定例での注記:

  • 最初のエントリでは、データベースにパスワード保護がありません。

  • 2 番目のエントリでは、どのユーザもデータベース "dbinst2" にアクセスできます。