次のページ
前のページ
目次へ
PostgreSQL HOWTO
Yoshio Shimamura <yoshios@green.ocn.ne.jp>
v2.0, 22 April 2003
この文書は、フリーなSQLデータベースである PostgreSQL の導入についての HOWTO です。
この文書の最新版は http://hp.vector.co.jp/authors/VA004572/index.html
から入手可能です。
フリーDBMSであるPostgreSQLのセットアップ方法、利用方法に関するメモ。
PostgreSQLは次のような特徴を持つ。
- SQL92サポート
- フリー
- 公開されているソースコード
- 多くのプログラミングインターフェースサポート
- 日本語対応
- オブジェクトリレーショナルデータベースモデルサポート
PostgreSQLのソースは次のサイトからdownloadできる。
また、パッチは次のサイトから。
必要なもの
- GNU make 3.75 or later (gmake -v)
- gcc 2.7.2.1 or later (gcc -v)
- bison (bison --verson)
- flex 2.5.4 or later (flex --version)
- patch (patch -v)
専用アカウントの作成
rootでインストールを行うとセキュリティ上問題があるので、専用アカウントを作成してインストールを行う。
# useradd postgres
# passwd postgres
******
******
インストール先ディレクトリの作成
専用アカウントがインストールできるように、/usr/local/pgsql(configureに--prefixを指定しなかったときのデフォルトのインストール先となるディレクトリ)を作成し、postresの所有とする。
# mkdir /usr/local/pgsql
# chown postgres:postgres /usr/local/pgsql
専用アカウントで作業
# su postgres
$ cd
$ mkdir src
ここで、アーカイブを/home/postgres/srcに持ってきて、展開する。
$ tar zxvf postgresql-7.3.x.tar.gz
$ cd postgresql-7.3.x
$ ./configure
$ make
$ make install
$ make clean
インストール作業は以上で終了。
利用する前にやっておかなければいけないのは次のことです。
データベースの初期化
データベースの管理者アカウントでログインします。ここでは、先ほど作成したpostgresです。
ログインしたら、次のユーザ側の設定をpostgresユーザの.bashrcに記述して変更を反映させてから、次のコマンドを入力します。
$ /usr/local/pgsql/bin/initdb
...
...
...
Success. You can now start the database server using:
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
次に、PostgreSQLのサーバであるpostmasterを次のコマンドで起動します。
オプションの-Sはサイレントモードです。
$ postmaster -S
サービスとして起動するには、/etc/rc.d/rc.localに次のようなスクリプトを追加します。
POSTGRESDIR=/usr/local/pgsql
if [-x $POSTGRESDIR/bin/postmaster -a -d $POSTGRESDIR/data ];then
rm -f /tmp/s.PGSQL.5432
su - postgres -c "postmaster -S -i"
echo -n 'postmaster '
fi
ユーザ側の設定
ユーザ側では、環境変数とコマンドパスの設定が必要です。各シェルの設定方法に合わせて次のbashによる例を参考に設定する。
~/.bashrcに追加
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH=$MANPATH:$POSTGRES_HOME/man
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB
export PATH=$PATH:$POSTGRES_HOME/bin
変更を反映させる
$ source ~/.bashrc
ユーザの作成と削除
ユーザの作成
hogehogeというユーザを作成するには、createuserコマンドを用いて次のようにします。
$ createuser hogehoge
Enter user's postgres ID or RETURN to use unix user ID: 500 ->
Is user "hogehoge" allowed to create databases (y/n) y
Is user "hogehoge" a superuser? (y/n) n
createuser: hogehoge was successfully added
WWWサーバ経由で、PostgreSQLデータベースにアクセスするのは、WWWサーバのユーザ(通常nobody)なので、ユーザnobodyを登録する必要があります。
$ createuser nobody
セキュリティ上の理由から、このユーザnobodyには、DB作成権限も、ユーザの追加権限も与えてはいけません。
ユーザの削除
ユーザhogehogeをPostgreSQLのユーザから削除する場合は、destroyuserコマンドを用いて次のようにします。
$ destroyuser hogehoge
データベースの作成
hogehogeという名前のデータベースを作成するには、次のようにcreatedbコマンドを使います。データベース名をユーザ名と同じにしておくと、データベースを使用するときにデータベース名を省略できます。
$ createdb hogehoge
psqlコマンドラインツール
付属のpsql対話型インターフェイスを用いてデータベースにアクセスすることができる。
$ psql hogehoge
Welcome to the POSTGRESQL interactive sql monitor:
Please read the file COPYRIGHT for copyright terms of POSTGRESQL
[PostgreSQL 6.5.3 on i686-pc-linux-gnu, compiled by gcc 2.7.2.3]
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: hogehoge
hogehoge=>
psqlを終了するには、\qをタイプする。
テーブル(表)の操作
作成
create table table-name (column-name data-type, ...)
削除
drop table table-name
列の追加
alter table table-name add column-name data-type
列名の変更
alter table table-name rename column-name to new-name
基本的なデータ型
bool 2値論理型
char 固定長文字列
varchar 可変長文字列
int2 符号付2バイト整数
float8 倍精度浮動小数点数
date 日付型
time 時刻型
データ操作命令
SQLにおけるデータを操作する命令には次のようなものがある。
select データ検索
insert データ追加
update データ更新
delete データ削除
select命令の使い方
データを検索するselect命令の書式は次のとおり。
select col1, col2, col3, ... from talble-name where condition
例;pc-listというテーブルにあるosがlinuxのレコードのid, name, priceを表示する。
select id, name, price from pc-list where os='linux';
insert命令の使い方
insert into table-name(col1, col2, ...) values(val1, val2, ...)
update命令の使い方
update table-name set col1 = val1, col2 = val2, ... where condition
delete命令の使い方
行を削除するdelete命令の書式は次のとおり。
delete from table-name where condition
例;pc-listというテーブルにあるosフィールドがwinのデータを削除する。
delete from pc-list where os='win';
条件の指定方法
次のページ
前のページ
目次へ