のインストールと初期設定

日経Linuxの「基礎から学ぶPostgreSQL」を見ながらお勉強

情報源

PostgreSQLのホームページ(英語) http://www.postgresql.org/
日本PostgreSQLユーザ会のホームページ(日本語) http://www.postgresql.jp/

バージョンの歴史

バージョン リリース時期 主な機能
6.0 1997-01-29 PostgreSQLとしてリリース
6.1 1997-06 遺伝的アルゴリズムによる問い合わせ最適化、シーケンス
6.2 1997-10 JDBC、トリガ
6.3 1998-03 副問い合わせ
6.4 1998-10 PL/pgSQL、マルチバイト文字
6.5 1999-06 多版型同時実行制御(MVCC)、ホットバックアップ
7.0 2000-05 外部キー制約(Foreign Keys)、各種結合(Join)
7.1 2001-04 WAL(Wire-ahead Logging)、外部結合(Outer Joins)
7.2 2002-02 平行VACUUM、MD5によるパスワード暗号化
7.3 2002-11 スキーマ、動的SQL文実行
7.4 2003-11 IPv6対応
8.0 2005-01 Windows対応、アーカイブログ昨日、バックグランドライタ機能、テーブルスペースのサポート、PTTR(Point-In-Time Recovery)、Save Pointのサポート
8.1 2005-11 2相コミット(two-phase commit)、自動VACUUM、ビットマップスキャン

アカウントの作成

何でもかんでも root で作業するのはよくない。そこでユーザを作っておく。username は何でもいいんだけど PostgreSQL だとわかりやすいものにする。

# useradd postgres

インストール

次のようにインストールを行い、make install したときに PostgreSQL installation complete と表示されればOK。

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

環境設定

これを ~/.bash_profile に登録する。

PGLIB  = /usr/local/pgsql/lib
PGDATA = /usr/local/pgsql/data
export PGLIB
export PGDATA

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

「データベース・クラスタ」は、データベースのデータや設定ファイル、ログ等を格納する領域を指す。データベース・クラスタ内には複数のデータベースを置くことができる。

データベース・クラスタの作成は initdb コマンドで行う。no-locale を設定しないと日本語処理がおかしくなる。encoding は "UTF8" でもいいかも。initdb コマンドを実行するといろんなメッセージが表示される。/usr/local/pgsql/data/postgresql.conf ファイルに自動的に書き込まれるので、必要であれば書き換える。

# initdb --no-locale --encoding=EUC_JP

デフォルトではデータベースへの接続する際に認証を行わないので、必要であれば、/usr/local/pgsql/data/pg_hba.conf ファイルを書き換えておこう。

# initdb --no-locale --encoding=EUC_JP
...
Success. You can now start the database server using: 
postmaster -D /usr/local/pgsql/data or 
pg_ctl -D /usr/local/pgsql/data -l logfile start

PostgreSQLの起動と停止

PostgreSQLでは postmasterというデーモンが1つのデータベース・クラスタに対応していて、これが動作していればデータベースにアクセスできる。起動してみよう。

$ pg_ctl start (起動)
postmaster starting
$ pg_ctl stop (停止)
postmaster stopped
$ pg_ctl status (状態を確認)

データベースに接続する

psqlというコマンドでデータベースに接続する。"-l" オプションでデータベース・クラスタ内のデータベース一覧が表示される。

$ psql -l
           List of databases
    Name     |   Owner    |  Encoding
 ------------+------------+------------
 postgres    |  postgres  |  EUC_JP
 template0   |  postgres  |  EUC_JP
 template1   |  postgres  |  EUC_JP  (テスト用なので使わない)
(3 rows)

データベースを作成する

$ createdb sample
CREATE DATABASE