Linux を触っているからには一度は使ってみたいデータベースです。Vine Linux 2.0 の Binaries CD には、PostgreSQL 関係の rpm が3個入っています。しかしながら、これを3つともインストールしただけでは、PostgreSQL を使うことができません。ここでは、PostgreSQL のインストールから psql で SQL 言語 を使えるようにするにはどうしたら良いかを述べます。
まず、インストールは簡単です。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
次にpostgres 以外の user がデータベースにアクセスできるように、/var/lib/pqsql/pg_hba.conf の設定をします。設定といってもこのファイルを開いて
# host all 127.0.0.1 255.255.255.255 trust
と書いてある行の # を消してコメントアウトを外すだけです。
次に 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
ここで PosgreSQL のバックエンドである postmaster をデーモンプロセスとして走らせます。これは root 権限で次のコマンドを実行します。(postmaster も postgres アカウントでないと走らせることはできませんが、下のスクリプトのなかで root から postgres にアカウントを変更しています。/etc/rc.d/init.d/ のなかのスクリプト群は、実は、起動時に走らせるデーモンを起動させたり、リブートしたり、終了させたりするためのスクリプトですが、単体で使うと個々のデーモンのコントロールするのが楽です。)
$ su Password: # /etc/rc.d/init.d/postgresql start # exit $
これで準備完了です。次は、再び 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データベース入門
。