PR

今回は,PostgreSQLの導入と初期設定手順を紹介する。空き容量が200Mバイトのハード・ディスクを備えたLinuxパソコンがあればすぐに導入できる。本講座を読みながらインストールしてみよう。

 前回は,PostgreSQLの概要を解説した。今回はいよいよPostgreSQLの最新版を導入して初期設定を行いながら,実際にPostgreSQLを利用できる環境を構築していく。後述する条件を満たすような,Linuxを搭載したパソコン(以下,Linuxパソコン)を用意して,実際に操作しながら読み進めてほしい。

PostgreSQLを導入するPCを用意

 まず,Linuxパソコンを用意しよう。PostgreSQLは少ないシステム・リソースでも動作する。例えば,ソース・コードからコンパイルして導入する場合でも,ハード・ディスクの空き容量は200Mバイトもあれば十分だ。

 メモリー容量は,同時に接続するユーザー数(同時接続ユーザー数)を多くしたい場合には,十分に余裕を持たせた方がよい。ただし,数人のユーザーが接続して利用する環境なら,特に気にする必要はないだろう。

 今回はPostgreSQLの最新版を利用する。そのバイナリ・パッケージの配布はこれからなので,ここではソース・コードからコンパイルして導入する。そのため,GNU makeやGCCなどの開発環境が必要だ。例えば,Fedora Core 4ならインストール時にインストールタイプの選択で「ワークステーション(W)」を選択しておけば,自動的に開発環境が導入される。

ソース・コードの入手

 今回は,2006年3月中旬時点の最新であるPostgreSQL8.1.3を使用する。早速ソース・コードを入手しよう。前回紹介した「PostgreSQL Global Development Group」の公式サイト(http://www.postgresql.org/)の「LATEST RELEASE」に入手先へのリンクがある。そのリンク先から,最新版のソース・コード一式をまとめて圧縮したファイル「postgresql-8.1.3.tar.gz」をダウンロードする。

 ダウンロードしたファイルは/usr/local/srcディレクトリに保存する。


$ ls /usr/local/src
postgresql-8.1.3.tar.gz

パッケージとの競合を確認

 Linuxディストリビューションのインストール時に,PostgreSQLを同時にインストールしている場合も多いだろう。インストール済みのPostgreSQLと,これからインストールするPostgreSQLの共存も可能だ。しかし,いくつか注意しなければならないことがあるため,PostgreSQLを使い慣れているユーザー以外,共存はお勧めできない。

 そこでインストールを開始する前に,既存のPostgreSQLをアンインストールしておく。PostgreSQLがインストールされているか否かは,rpmコマンドで確認できる。


$ su
# rpm -aq | grep postgresql

 以上のように実行して,PostgreSQLに関するパッケージの一覧が表示された場合には,既にインストールされている。次のコマンドでアンインストールを実行しよう。


# rpm -aq | grep postgresql | xargs rpm -e

アカウントの作成

 PostgreSQLの運用管理は,OSのスーパーユーザー(root)とは別の権限で行う必要がある。これは,OSとデータベースの管理者を明確に分けるというセキュリティ上の理由からだ。

 そこで,PostgreSQL管理者用のアカウントを新規に作成しよう。アカウント名の命名規則はないが,ここでは慣習的に使われている「postgres」とした。ユーザー名が決定したら,Linuxのユーザーとしてアカウントを作成する。


# /usr/sbin/useradd postgres

格納ディレクトリの準備

 PostgreSQLのインストールも,先ほど作成したPostgreSQL管理者の権限で行う。そのため,PostgreSQL管理者が書き込みできるように,インストールに必要なディレクトリを作成していく。

 必要なディレクトリは,ソース・コードを展開してコンパイルするための作業用ディレクトリ(/usr/local/src/postgresql-8.1.3)と,プログラムや関連するファイル類を保存しておくディレクトリ(/usr/local/pgsql)の2つである。これら2つのディレクトリをroot権限で作成し,chownコマンドにより所有者をPostgreSQL管理者に書き換える。


# mkdir /usr/local/src/postgresql-8.1.3
# mkdir /usr/local/pgsql
# chown postgres /usr/local/src/postgresql-8.1.3
# chown postgres /usr/local/pgsql

PostgreSQLのインストール

 PostgreSQLのコンパイルおよび導入手順は以下の通り。前述したようにすべての作業はPostgreSQL管理者の権限で実施する。


# su - postgres
$ cd /usr/local/src
$ tar xfz postgresql-8.1.3
$ cd postgresql-8.1.3
$ ./configure
$ make
$ make install

 最後に「PostgreSQL installation complete.」と表示されれば,PostgreSQLのインストールは完了だ。念のため,/usr/local/pgsqlディレクトリ以下にプログラムがインストールされているかを確認しておこう(図1)。

図1●PostgreSQLが導入されたディレクトリ
図1●PostgreSQLが導入されたディレクトリ
正常にインストールが完了すると,/usr/local/pgsqlディレクトリ配下に「bin」「doc」「include」「lib」「man」「share」という6つのディレクトリが作成される。

環境設定を整備する

 続いて,PostgreSQLの動作に必要な環境を整えよう。設定するのは,OSに関連する「PATH」と「MANPATH」,PostgreSQL関連としてライブラリを格納するディレクトリ「PGLIB」とデータベース・クラスタ(後述)を保存するディレクトリ「PGDATA」という4つの環境変数だ。

 PGDATAに指定するディレクトリはデータベース・クラスタ作成時に作られるものなので,現時点では存在しないディレクトリである。今回は,/usr/local/pgsql/dataディレクトリにデータベース・クラスタを作成するものとして,PGDATAにこのディレクトリを指定する。

 4つの環境変数の設定は,次のようにPostgreSQL管理者のホーム・ディレクトリ内にある.bash_profileファイルに追記する。


PG=/usr/local/pgsql
PATH=$PATH:$PG/bin
export MANPATH=$MANPATH:$PG/man
export PGLIB=$PG/lib
export PGDATA=$PG/data

 追記したら,設定を読み込ませるため,


$ source ~/.bash_profile

を実行する。

データベース・クラスタを作成する

 PostgreSQLでは,データベースのデータや設定ファイル,ログ等を格納する領域を「データベース・クラスタ」と呼ぶ。データベース・クラスタは,特定のディレクトリ内に構成される。データベース内の実データを格納しているので,PostgreSQLを運用する上で一番重要な領域だ。

 データベース・クラスタ内には,複数のデータベースを置くことができる。データベース・クラスタの中身を図示すると図2のようになる。

図2●データベース・クラスタ
図2●データベース・クラスタ
「template0」「template1」「postgres」は既存のデータベースであり,「postgresql.conf」はPostgreSQLの設定ファイル,「pg_hba.conf」はPostgreSQLのアクセス制御の設定ファイルである。

 データベース・クラスタは,initdbコマンドを用いて作成する。initdbコマンドを発行すると,先ほど設定した環境変数のPGDATAに指定したディレクトリ内にデータベース・クラスタが作成され,初期化される。

 実際に,initdbコマンドを実行してデータベース・クラスタを作成しよう。


$ initdb --no-locale --encoding=EUC_JP

 「--no-locale」は,データベース・クラスタ作成時にロケールを利用しないためのオプションだ。ロケールを利用すると,日本語の文字列の並び替えなどが正しくできないことがある。

 「--encoding=<文字コード>」は,データベースのデフォルト(初期設定)になるエンコーディングを指定するオプションである。日本語を利用する環境の場合,「EUC_JP」(日本語EUC)あるいは「UTF8」(Unicode)を選択することが多い*1

 このようにinitdbコマンドを実行すると,さまざまなメッセージが出力される。特に注意すべきメッセージは図3に示した2つ。それぞれ同時接続ユーザー数と共有メモリー容量を設定しているメッセージだ。これらの設定は,/usr/local/pgsql/data/postgresql.confファイルに自動的に書き込まれる。必要なら書き換えよう。

図3●データベース・クラスタ初期化時のメッセージ(一部)
図3●データベース・クラスタ初期化時のメッセージ(一部)
表示されるメッセージの中で,同時接続ユーザー数と共有メモリー容量の設定は重要だ。

 また,デフォルトではデータベースへの接続時の認証に「trust」を使用するようにしてデータベース・クラスタを作成する(図4)。「trust」というのは認証なしで接続できる設定だ。セキュリティ上望ましくない場合には,データベース・クラスタの作成後に,/usr/local/pgsql/data/pg_hba.confファイルを書き換えよう。

図4●セキュリティに関する警告
図4●セキュリティに関する警告
デフォルトでは,データベースへの接続時の認証を行わないように設定されている。
[画像のクリックで拡大表示]

 最後に,図5のメッセージが出力されれば,データベース・クラスタの作成と初期化は完了である。

図5●データベース・クラスタの作成・初期化完了のメッセージ
図5●データベース・クラスタの作成・初期化完了のメッセージ
このメッセージが表示されれば,データベース・クラスタが正しく作成されている。

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
日経電子版セット今なら2カ月無料