PostgreSQL のインストール

この章では、PostgreSQL のインストールとセットアップに関する情報を記載しています。

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

始める前に

手順


ステップ 1

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

>su - postgres

>psql

ステップ 2

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

#CREATE ROLE tcuser LOGIN CREATEDB;

(注)  

 

PostgreSQL バージョン 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 ユーザーがデータベースにアクセスできるようにします。 次に例を示します。

# タイプ データベース ユーザ CIDR-アドレス METHOD
ホスト tcmadb tcuser 10.89.99.0/24 パスワード
ホスト dbinst モーゼル 10.89.99.0/24 パスワード
ローカル1 すべて すべて Trust または MD5
1 Unix ドメインソケット接続のみ。

ステップ 5

postgrestcuser ユーザのパスワードを定義するために、これらのコマンドを入力してください:

#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 = '*'

ステップ 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 ファイルの「Port」パラメータ値を上書きします。したがって、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 Service が使用する特定のユーザーおよびデータベースインスタンスのみに制限することを強くお勧めします。 <install_dir>/data ディレクトリにある pg_hba.conf ファイルで、PostgreSQL データベースへのユーザアクセスを制限することができます。


注意    


ユーザとデータベースのエントリに「すべて」を構成しないでください。任意のユーザが任意のデータベースにアクセスできるようになる可能性があるためです。


外部データベースへのユーザ アクセスを構成する場合、「password」メソッドを使用して、データベース アクセスのパスワード保護を構成することを推奨します。


(注)  


IM およびプレゼンスサービスでデータベースエントリを設定する際に、データベースユーザのパスワードを入力する必要があります


以下は、pg_hba.conf ファイル内の安全なユーザアクセス設定と安全性が低いユーザアクセス設定の例です。

セキュアな構成の例:

# タイプ

データベース

ユーザ

CIDR-アドレス

METHOD

ホスト

dbinst1

tcuser1

10.89.99.0/24

パスワード

ホスト

dbinst2

mauser1

10.89.99.0/24

パスワード

安全性が低い構成の例:

# タイプ

データベース

ユーザ

CIDR-アドレス

METHOD

ホスト

dbinst1

tcuser1

10.89.99.0/24

トラスト

ホスト

dbinst2

すべて

10.89.99.0/24

パスワード

安全性が低い構成の例に関するメモ:

  • 最初のエントリには、データベースのパスワード保護が含まれていません。

  • 2 番目の入力により、任意のユーザにデータベースdbinst2 "へのアクセスを許可します。"