PostgreSQL のインストールおよび設定
PostgreSQL のインストールおよび設定

PostgreSQL のインストールおよび設定

この章では、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
    ステップ 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

    #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" にアクセスできます。