PostgreSQLの管理

別ページ::

(2007.2.11) 古い文書に加筆、修正のうえ公開。

(2007.9.19 更新。)

PostgreSQL Global Development Groupによって開発されているフリーなデータベースPostgreSQLの保守、運用、日常管理について。

データベースを利用したプログラミングについては、『基礎から学ぶデータベースプログラミング』を参照。

# データベースサーバの起動、停止と再起動

rpmパッケージを利用

rpmパッケージでインストールしたときは、 /etc/rc.d/init.d/postgresql コマンドが用意されています。引数として start, stop または restart を与えて実行します。

root UNIXユーザになって、次のようにします。

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

システムの起動時に自動的にデータベースサーバを開始するには, chkconfig コマンドを使います。

(2011.12 ここから)
Fedora 16 Linux では SysVスタイルのinit scriptが廃止され、ほぼ systemdに移行しました。systemctl コマンドを使います。

起動は次のようにします。

# systemctl start postgresql.service

また、システム起動時に自動的に開始するには、次のようにします。

# systemctl enable postgresql.service

(2011.12 ここまで)

または、postgres UNIXユーザになって、次のようにします。

$ PGDATA=/var/lib/pgsql/data pg_ctl restart

環境変数PGDATA, PGPORT, PGLOG などは、/etc/sysconfig/pgsql/postgresql というファイル名でシェルスクリプトを置けば、/etc/rc.d/init.d/postgresql ファイルから自動的に参照されます。

ソースからインストールした場合

データベースサーバ (postmasterデーモン) を起動します。postmasterデーモンを起動する際, -Dオプションか環境変数PGDATAで, データベースクラスタのディレクトリを与えます。postgres UNIXユーザのみがpostmasterデーモンを起動できます。

ただ, postmasterコマンドを直接起動してもいいのですが、起動・終了を安全に行うためのpg_ctlというコマンドがあります。普通はこちらを使います。

$ /usr/local/pgsql/bin/pg_ctl -o "-i" start

「PgAccess」というPostgreSQLをGUIで操作するプログラムを使うときは、-o "-i"オプションを付加します。pg_ctlの-oオプションは、その引数をそのまま postmasterに渡します。

OSの起動時にpostmasterを起動するには、/etc/rc.d/init.d/ ディレクトリにpg_ctlコマンドへのシンボリックリンクを作成し、必要に応じて /etc/rc.d/rc3.d/ などのディレクトリに先のシンボリックリンクへのシンボリックリンクを作成します。

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

(2007.9.19 更新)

データベースの作成

データベースを作成するには、createdbコマンドを使います。当然、postmasterデーモンが動いていなければ動作しません。

$ createdb -h localhost -U postgres --encoding=UTF8 --owner=rails booksample
CREATE DATABASE

-h (--host)、-U (--username) オプションでデータベースのホスト名、接続するユーザを指定し、作成するデータベースについて、所有者 (-O, --owner), 文字コード (-E, --encoding)、データベース名を指定します。

データベースの一覧

データベースを一覧するには、psqlコマンドに-lオプションを渡します。自分が所有者でないデータベースも一覧表示されます。

$ ./psql -l
         List of databases
    Name     |  Owner   | Encoding  
-------------+----------+-----------
 booksample2 | hori     | EUC_JP
 template0   | postgres | SQL_ASCII
 template1   | postgres | SQL_ASCII
(3 rows)

データベースの削除

データベースを削除するには、dropdbコマンドを使います。データベースユーザ名 (postgresなど) を明示的に指定するには、createdbコマンドと同様に、-Uオプションを渡します。

$ ./dropdb booksample
DROP DATABASE

# GUIツール

PgAccess

PgAccessは、Tcl/Tkで書かれた、PostgreSQL用のGUIソフトウェアで、Microsoft Accessに似たインターフェイスを提供する。

(2007.2) 開発が停滞している? (2011.12) 2004年で終了したみたい。

インストール方法::

$ tar xzvf pgaccess-0.98.8.20030117.tar.gz 
$ cd pgaccess-0.98.8.20030117
$ su
# make clean
# make all

OSにインストールされているTcl/Tkのバージョンによっては、日本語の入力ができません。

Tcl/Tkバージョン8.4.xであれば問題なく日本語の入出力ができます。バージョン8.4.xはバージョン8.1以降と高い互換性があるので、そのまま上書きインストールしても大丈夫です。

次の3つのパッケージをインストールします。

  • Tcl
  • Tk
  • tcllib
$ ./configure --prefix=/usr && make
$ su
# make install

それから, 環境変数を設定します。

  PGACCESS_HOME=/usr/lib/pgaccess
  PGLIB=/usr/local/pgsql/lib

pgAdmin III

PostgreSQL用のメジャーなGUIツール。アプリケーション開発環境ではなく, データベースを直接操作するためのアプリケーション。

Windows, Linuxの両方でバイナリが提供されている。(wxWidgetsを利用。)

Fedora Core 6では、パッケージが用意されている。pgadmin3-1.4.3

Kexi

Microsoft Access または Filemaker に似たデータベース管理アプリケーション。

Fedora 15 Linux にはパッケージが用意されている (koffice-kexi, バージョン2.3.3).

Rekall

KDE用のMicrosoft AccessライクなGUIツール、のようだ。(2011.12) Webサイトがなくなっている。開発終了.

Bond

(2011.12)

Bondは、Linux / Windows 用のデスクトップアプリケーションを作成するためのRADフレームワーク。