ネットワークサーバの構築のページに戻る

PostgreSQLを使ったデータベースサーバの構築

PostgreSQLは本格的なデータベースを使えるサーバです。 ネットワーク経由で、サーバに接続しSQLで問い合わせを 行うことができます。

最近では、PHPを使えるApacheサーバで提供されるウェブページから このPostgreSQLのデータベースにアクセスして簡単に使えるので、 多くのユーザがこれを用いています。
ソースアーカイブ名

導入環境

インストール

管理用のアカウント postgres の作成

インストールするシステム上にPostgreSQLを管理するための ユーザアカウントを作成します。vipwやadduser などを使ってpostgresという名前のアカウントを作ります。

環境変数の設定

.bashrc, .cshrcなどで以下の環境変数を設定します(管理者および各ユーザで必要です)
POSTGRES_HOME=/usr/local/pgsql
PGLIB=/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql/data
LD_LIBRARY_PATH=/usr/local/pgsql/lib

PostgreSQLのmakeとインストール

入手したアーカイブの存在するフォルダで以下のコマンドを実行します. gmakeが必要なので、入っていなければインストールする必要があります
% tar zxvf postgresql-7.0.2.tar.gz
% zcat psqlj-7.0.2.diff.gz | patch -p0 
% cd postgresql-7.0.2/src
% ./configure --with-multibyte=EUC_JP 
% gmake
# su
# gmake install
# mkdir /usr/local/pgsql/data
# chown postgres /usr/local/pgsql/data
# su postgres
% /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
% /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
最後の2つのコマンドはデータベースを初期化し、サーバをスタートさせるためのものです。

ブート時に自動的にサーバをスタートさせるための設定

/usr/local/etc/rc.d/pgsql.shというファイルに以下の内容を書き込みます。
#!/bin/sh
[ -x /usr/local/pgsql/bin/postmaster ] && {
	su -l postgres -c 'exec /usr/local/pgsql/bin/postmaster \
	-i -D/usr/local/pgsql/data \
        -S -o -F > /usr/local/pgsql/errlog' &
        echo -n ' pgsql'
}
さらに書き込んだファイルのモードを755にしてください。 また管理ユーザがpostgresでない場合は上の su -l の後にユーザ名を 指定してください。

他のホストからのアクセスの許可

管理用のアカウント(postgres)で/usr/local/pgsql/data/pg_hba.confを編集します。 例えば、IPアドレスが 210.252.0.208 から 210.252.0.223までのアクセスを 許可するには、以下の行を追加します。
host    all     210.252.0.208   255.255.255.240 trust

ユーザとデータベースの管理

コマンドを実行する場合は環境変数を設定が必要です。

データベースの作成と削除

データベースの操作は管理用のアカウント posgres でコマンドを実行することによって行います。
データベースを作るには、以下のコマンドを用います。
% /usr/local/pgsql/bin/cratedb 作成するデータベース名
次のコマンドですでに存在するデータベースを削除できます。
% /usr/local/pgsql/bin/dropdb 削除するデータベース名

ユーザの作成

以下のコマンドを実行してユーザを作り、デフォルトのデータベース(ユーザ名と同じ名前のDB)を作成します。 (以下の例ではfujikiというユーザを作成しています)
#su pgsql
% /usr/local/pgsql/bin/createuser fujiki
Enter user's postgres ID or RETURN to use unix user ID: 1002 ->
Is user "fujiki" allowed to create databases (y/n) y
Is user "fujiki" allowed to add users? (y/n) y
createuser: fujiki was successfully added
# /usr/local/pgsql/bin/creatdb fujiki
デフォルトのデータベースは作成しなくても使えますが、この場合、 psqlを実行する際に引数でデータベースを指定することが必要となります。

動作確認

以下をを実行する場合は環境変数を設定が必要です。
動作確認はフロントエンドでpsqlを起動して行います。 ここでSQL文を入力して、正しく動作するか確認します。
確認例
% /usr/local/pgsql/bin/psql
Welcome to the POSTGRESQL interactive sql monitor:
  Please read the file COPYRIGHT for copyright terms of POSTGRESQL

   type \? for help on slash commands
   type \q to quit
   type \g or terminate with semicolon to execute query
 You are currently connected to the database: fujiki

fujiki=> create table price_table (name text,price int);
CREATE
fujiki=> insert into price_table values ('orange',100);
INSERT 151434 1
fujiki=> insert into price_table values ('apple',150);
INSERT 151435 1
fujiki=> select * from price_table;
name  |price
------+-----
orange|  100
apple |  150
(2 rows)
fujiki=> \q
このようにテーブルを作ることができ、データの挿入や検索が正しく 行えれば、正しく動作しています。

参考 SQLコマンド
処理コマンド
テーブルの作成create create table price_table(name text,price int);
テーブルの削除drop drop table price_table;
データの挿入insert insert into price_table values ('apple',150);
データの検索select select * from price_table where name ='apple';
データの削除delete delete from price_table where name='apple';
アクセス権付与 grant grant all on price_table to nobody;
(アクセス権にはall,select,update,insert,delete,rule)が使える


ここまで来たら、さらに PHPを追加したApacheをインストールして ウェブページからPostgreSQLにアクセスできるようにしましょう

APACHE-PHPのインストールへ


「サーバの構築」のページへ戻る

ホームへ戻る