PostgerSQLの設定

 PostgerSQLとは、OracleやSQLServer、MySQLと同じくデータベースのアプリケーションです。 データの検索や更新などはSQL文で行います。OracleやSQLServerと違ってフリーソフトなのでコストが安く 設定が簡単です。 その代わりサポートなどがありませんが、単純なシステムには最適なので多く企業が使用しています。
 PostgersSQL単体では、ほとんど意味の無いアプリケーションですが、Javaなどで作成したプログラムを併用して 使われる事が多いです。

≪ 項目 ≫
1.PostgerSQLのダウンロード
2.PostgersSQLのインストール
3.PostgersSQLの初期設定
4.PostgersSQLの設定ファイル
5.PostgersSQLの起動と終了

 1.PostgerSQLのダウンロード

 今回の PostgerSQL は、パッケージを使用せずソースからコンパイルをします。
 以下のサイトからダウンロードしてきます。

 http://www.postgresql.jp/PostgreSQL
 http://www.postgresql.org/

 今回は Version 7.4.28 を使用します。 最新は version 8 ですが、glibc と kernel の version も関係して、コンパイル時にエラーが出てしまいます。 なので少し version を落として今回は version 7.4.28 を使用します。
 JavaとPostgreSqlを接続する JDBC ドライバは、以下のページ

 http://jdbc.postgresql.org/download.html

JDBC1 は JDK1、JDBC2 は JDK1.2、1.3 JDBC3 は JDK1.4、1.5で使用します。JDBCドライバは Java と併せて使用します。

 2.PostgerSQLのインストール

 まず、ダウンロードした PostgreSQL を解凍します。作業ディレクトリィは /usr/local/src で行ないます。

[root@localhost /usr/local/src/]# tar zxvf postgresql-7.4.28.tar.gz

 解凍の後は、postgresql-7.4.28 というディレクトリィが出来ているので、そちらにカレントを移動してコンパイルを行ないます。

[root@localhost /usr/local/src/postgresql-7.4.28]# ./configure --enable-multibyte=EUC_JP --without-readline --without-zlib
[root@localhost /usr/local/src/postgresql-7.4.28]# make
[root@localhost /usr/local/src/postgresql-7.4.28]# make install

 オプションに --without-readline と --without-zlib の2つがあります。 どうも Turbolinux の標準のreadline と zlib がインストールされているとエラーが出るみたいなので、使わないように指定します。
 これでエラーが出なければ、/usr/local/pgsql というディレクトリィが出来ているはずです。

 3.PostgerSQLの初期設定

◆ 環境変数の設定

 PostgerSQL を動作させるには、”postgres”というユーザーが必要です。 useradd で作成しておきます。 その後、.bash_profile で以下の環境変数を設定します。

POSTGRES_HOME=/usr/local/pgsql
PATH=$PATH:/usr/local/pgsql/bin
PGLIB=$POSTGRES_HOME/lib
PGDATA=$POSTGRES_HOME/data         <<-- データベースの格納場所となる
LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"


export POSTGRES_HOME
export PGLIB
export PGDATA
export LD_LIBRARY_PATH

 以後、PostgreSQL を動作させる場合は、このユーザーを使用することになります。
 上記で記述している PGDATA は、実際のデータベースの格納領域です。 この部分だけは、好きな場所に作成する事ができるようで、ディスク容量に不安があれば別の場所を指定できます。
(必ずしも /usr/local/pgsq じゃないといけないわけではないようです。)

◆ データベースの初期化

 上記で make install しただけでは設定ファイルもありません。 なので以下のコマンド実行してデータベースの初期設定を行ないます。

[root@localhost /usr/local/pgsql/bin]# initdb --encoding=EUC_JP -W


 上記で PATH の設定もしているので、どこで実行してもかまいませんが、initdb は /usr/local/pgsql/bin の直下にあります。 -W をオプションで指定することでパスワード設定ができるようになります。
 initdb が正常に動作したら PGDATA で指定したディレクトリィに data というディレクトリィが出来ているはずです。 この直下に設定ファイルがあります。


 4.PostgersSQLの設定ファイル

◆ PostgreSQLの設定ファイル

 initdb が正常に実行できた場合は、PGDATA で指定したディレクトリィが自動で作成され、その直下に設定ファイルが作成されているはずです。 PostgreSQL の設定ファイルは以下3つです。

・postgresql.conf ・・・ PostgreSQLの基本動作に関わる設定
ログ出力やメモリ管理などもこの設定で行ないます。

・pg_hba.conf ・・・ PostgreSQLの接続に関する設定

・pg_ident.conf ・・・ pg_hba.conf の補助的なファイル
METHOD の項目で ident を指定した時に使用するそうです。


 使用するのは上の2つだと思いますので、その2つを記述していきます。
 ちなみに設定ファイルの細かい説明などは下記のページにありますので、そちらも参照してください。
 http://www.postgresql.jp/document/


◆ postgresql.conf

 コメントの部分はほとんど初期設定だと思いますが、確認が必要な箇所だけを記述していきます。

tcpip_socket = << true | false >> ・・・ TCP/IP 経由接続を受け入れるか。要は他のPCからの接続を受けるかどうかです。 標準は恐らく true です。WebサーバーとDBサーバーが1つの場合は false でも問題ないです。 ただし、他のPCから確認のためにSQLを実行するなどの場合は true を指定します。

port = ポート番号 ・・・ 接続ポートを指定します。標準は 5432 です。

fsync = << true | false >> ・・・ 同期書込をするかどうか。 基本はある程度更新などのデータが、バッファに溜まった所でデータベースに更新するという手法だと思われるので、false で大丈夫だと思います。


 メモリ管理などパフォーマンスの設定もできるみたいです。

◆ pg_hba.conf

 このファイルは、PostgreSQL へ接続するPCを設定するファイルです。 初期設定では、ローカルマシンしか許可されていないので、少し設定を変更します。
 書式は タイプ、データベース名、ユーザー、IPアドレス、サブネットマスク、メソッドの順で半角空白で区切って記述します。

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust
host all all 127.0.0.1 255.255.255.255 trust


 実際に記述する箇所は、一番下の方にあります。 上から順に簡単に説明します。

 「タイプ」はPostgreSQLに対して接続するPCの種類を指します。local は自PCで host は他PCの事です。 (他にも色々あるみたいですが)

 「データベース名」は、PostgreSQLで作成したデータベースを指します。 createdb コマンドで作成したデータベース名の事です。(設定編なので、この辺りは別ページに記述します。) all と指定する事で、全てのデータベースを指定する事ができます。

 「ユーザー」は、上記のデータベース上で作成したユーザーの事です。 create user コマンドで作成したユーザーの事を指します。 やはり all と指定する事で、全てのユーザーを指定する事ができます。

 「IPアドレス」と「サブネットマスク」は、接続を許可したいIPアドレスを指定します。 (ただしタイプが host の場合です)

 「メソッド」は認証方式を指定します。 trsut は無条件で許可してしまうので、せめてパスワード認証ができる password に変更しましょう。 あと無条件に拒否する reject というのもあります。特定のホストやユーザーからアクセスを禁止したいなら設定しましょう。

 なので上記の設定ファイル例の太字の部分を以下の様に修正しました。(IPアドレスは各自で設定お願いします。)

# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all aaa.bbb.ccc.ddd 255.255.255.0 password
host all postgres aaa.bbb.ccc.ddd 255.255.255.0 reject

 PostgreSQL用のLinuxのユーザー「postgres」は、スーパーユーザーの為かどのデータベースにも無条件で入れてしまいます。 ローカルからだと良いのですが、他PCからだとちょっとセキュリティ的に問題ありだと思うので上記のように追加しました。

 5.PostgersSQLの起動と終了

 PostgreSQL の起動と終了は bin 直下にある pg_ctl コマンドで行ないます。 上記の設定だと PATH を通しているのでそのまま実行できると思います。

 pg_ctl start   (起動)
 pg_ctl stop   (終了)

 PostgreSQL は単体だとあまり意味がないので、「Javaの覚書」の方で併せてその使い方を記述していこうと思います。


TOPページに戻る