PostgreSQL で遊ぼう

Linux を触っているからには一度は使ってみたいデータベースです。Vine Linux 2.0 の Binaries CD には、PostgreSQL 関係の rpm が3個入っています。しかしながら、これを3つともインストールしただけでは、PostgreSQL を使うことができません。ここでは、PostgreSQL のインストールから psql で SQL 言語 を使えるようにするにはどうしたら良いかを述べます。

PostgreSQL のインストール

まず、インストールは簡単です。GNOME の GUI でやってもいいし、次のようにコマンドラインから実行することもできます。

$ mount /mnt/cdrom
$ cd /mnt/cdrom/Vine/RPMS
$ ls postgres*
postgresql-6.5.1_jp-1.i386.rpm          postgresql-devel-6.5.1_jp-1.i386.rpm
postgresql-clients-6.5.1_jp-1.i386.rpm
$ su
Password:<root のパスワード>
# rpm -i postgresql-clients-6.5.1_jp-1.i386.rpm
# rpm -i postgresql-6.5.1_jp-1.i386.rpm
# rpm -i postgresql-devel-6.5.1_jp-1.i386.rpm

pg_hba.conf の設定

次にpostgres 以外の user がデータベースにアクセスできるように、/var/lib/pqsql/pg_hba.conf の設定をします。設定といってもこのファイルを開いて

# host  all  127.0.0.1  255.255.255.255  trust

と書いてある行の # を消してコメントアウトを外すだけです。

postgres アカウントのパスワード変更

次に postgres アカウントのパスワードを変更します。データベースの初期化やデータベースユーザの設定は postgres アカウントで行なわないといけませんが rpm をインストールした段階ではパスワードが分からないので postgres アカウントでログインできません。ルート権限なら一般ユーザのパスワードを変更できるので、それをやっておきます。

# passwd postgres
New UNIX password: <postgres のパスワード>
Retype new UNIX password: <postgres のパスワード>
passwd: all authentication tokens updated successfully
# exit

データベースの初期化

これで postgres のアカウントでログインできるようになりました。PostgreSQL はまずデータベースの初期化を行なわないと使うことができません。(postmaster が管理するデータベース全体のことをマニュアルではサイトと呼ぶようです)。また、データベースの初期化は root アカウントからはできず、 postgres アカウントでないとできません。そこで、postgres アカウントでデータベースを初期化します。データベースの初期化は initdb コマンドを使います。

$ su postgres
Password: <postgres のパスワード>
$ initdb -r /var/lib/pgsql -l /var/lib/pgsql
$ exit

postmaster の起動

ここで PosgreSQL のバックエンドである postmaster をデーモンプロセスとして走らせます。これは root 権限で次のコマンドを実行します。(postmaster も postgres アカウントでないと走らせることはできませんが、下のスクリプトのなかで root から postgres にアカウントを変更しています。/etc/rc.d/init.d/ のなかのスクリプト群は、実は、起動時に走らせるデーモンを起動させたり、リブートしたり、終了させたりするためのスクリプトですが、単体で使うと個々のデーモンのコントロールするのが楽です。)

$ su
Password:
# /etc/rc.d/init.d/postgresql start
# exit
$

postgres データベースの作成と psql の起動

これで準備完了です。次は、再び postgres アカウントで postgres と言う名前のデータベースを作成します。データベースが作ってないと psql を使うことができません。postgres のアカウント名と同じ postgres というデータベースを作ると PostgreSQL のフロントエンドの psql を引数無しで起動できます。

$ su postgres
Password:<postgres のパスワード>
$ createdb postgres
$ 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: postgres

postgres=>

一般ユーザを作る

待望の psql を起動することができました。このままでも postgres でログインすれば SQL 言語を使ってみることができますが、データベースを作成するのにいちいち postgres アカウントになるのは不便なので、psql の中から create user コマンドを実行して username アカウントでデータベース作成ができるようにします。

postgres=> create user username createdb;
CRATE USER
postgres=>\q
$ exit
$

自分のアカウントに戻ったら username のデータベースを作ります。

$ createdb username
$ 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: username

postgres=>

これで完了です。あとは、参考書を手に思いきり SQL 言語で遊ぶことができます。psql から抜けるには \q を使います。また、Linux の起動時に postmaster ( PostgreSQL のバックエンドデーモン) を走らせたい場合は、root 権限で chkconfig コマンドを使います。

$ su
Password: 
# /sbin/chkconfig --add postgresql

もちろん、GUIのツールを使って設定することもできます。また、手動で起動するには、root 権限で

# /etc/rc.d/init.d/postgresql start

を実行するのが便利です。

このページで述べた手順がどういう意味を持っているのかは、市販の参考書を何冊か読む必要があるかも知れませんが、とりあえず psql を動かすところまでたどり着ければ色々と遊んでみることができます。

PostgreSQL についての情報はネットワーク管理者(の卵)養成講座日本PostgreSQL ユーザー会PostgreSQL mailing list in Japanが充実しています。

本家はPostgreSQLです。

データベースについての入門はUNIXデータベース入門