PostgreSQL

インストール

http://www.postgresql.org/からダウンロードします。ftp://ftp.jp.postgresql.org/v7.4.6/からpostgresql-7.4.6.tar.gzをダウンロードしました。2005/7/6現在8.0.3が出てますので、それも同じようにインストールしました。まず解凍します。またpostgresql用のユーザを作っておきましょう。

useradd postgres

ではコンパイルしていきます。

./configure --enable-multibyte=EUC_JP --with-perl --with-java 

これでEUC_JPで日本語が扱え、perl,javaを操作するためのモジュールがインストールされます。 8.2.4では、

./configure --enable-nls=ja --with-perl --with-openssl

としました。--enable-nls=jaでエラーが出る場合は、 http://www.gnu.org/software/gettext/よりgettextをインストールしておきます。

wget ftp://mirrors.kernel.org/gnu/gettext/gettext-0.17.tar.gz
tar xzvf gettext-0.17.tar.gz
cd gettext-0.17
./configure
make
make install

ではpostgesの続きです

make all
make install

またインストールは/usr/local/pgsqlにされてますので、先ほど作ったユーザに変更しておきます。

chown -R pgsql:pgsql /usr/local/pgsql

では環境変数の設定です。.bashrcとか/etc/profileにでもいれておきます。

export PATH="$PATH":/usr/local/pgsql/bin
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"

追加したら、sourceコマンドで反映させておいてください。では初期化です。

su - postgres
initdb --encoding=EUC_JP

initdb -D /usr/local/pgsql/data -E utf8

このときwhichでinitdbの場所を確認しておいてください。すでにインストールされている場合は、別のパスを見に行く可能性があります。また、postgresのユーザもすでに作成されているかもしれないので、.bashrc等のファイルは確認しておいてください。

起動オプション

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg.log start

てな感じで

  • pg_ctl
    -D datadir
    データの場所です。省略した場合は、環境変数PGDATAが使われます
    -o options
    postmasterに渡すオプションを指定します。"か'でくくってください。
    -l filename
    ログの名前を指定します。
    -s
    エラーメッセージのみを表示します。
    -p path
    postmasterの場所を指定します。デフォルトではpg_ctlと同じディレクトリです。
  • postmaster
    -B buffers
    サーバプロセスが使用する共有バッファの数をです。デフォルトでは64buffersで、1buffersは8kBです。
    -i
    クライアントとTCP/IPで接続できます。ない場合にはローカル接続のみです。ただpg_hba.confに記述がないと接続できません。
    -p port
    接続用のポートです。指定がない場合は、5432です。
    -S
    サイレントモードで起動します。
    status
    ステイタスが表示されます。これはプロンプトで使用してください。

自動起動

#! /bin/sh
# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS
# This is an example of a start/stop script for SysV-style init, such
# as is used on Linux systems.  You should edit some of the variables
# and maybe the 'echo' commands.
#
# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.
# Original author:  Ryan Kirkpatrick 
# $Header: /cvsroot/pgsql-server/contrib/start-scripts/linux,v 1.3 2001/07/30 14:52:42 momjian Exp $
## EDIT FROM HERE
# Installation prefix
prefix=/usr/local/pgsql
# Data directory
PGDATA="/usr/local/pgsql/data"
# Who to run pg_ctl as, should be "postgres".
PGUSER=postgres
# Where to keep a log file
PGLOG="$PGDATA/serverlog"
## STOP EDITING HERE
# Check for echo -n vs echo \c
if echo '\c' | grep -s c >/dev/null 2>&1 ; then
   ECHO_N="echo -n"
   ECHO_C=""
else
   ECHO_N="echo"
   ECHO_C='\c'
fi
# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# What to use to start up the postmaster
DAEMON="$prefix/bin/pg_ctl"
set -e
# Only start if we can find pg_ctl.
test -f $DAEMON || exit 0
# Parse command line parameters.
case $1 in
 start)
       $ECHO_N "Starting PostgreSQL: "$ECHO_C
       su - $PGUSER -c "$DAEMON start -o '-i' -D '$PGDATA' -s -l $PGLOG"
       echo "ok"
       ;;
 stop)
       echo -n "Stopping PostgreSQL: "
       su - $PGUSER -c "$DAEMON stop -D '$PGDATA' -s -m fast"
       echo "ok"
       ;;
 restart)
       echo -n "Restarting PostgreSQL: "
       su - $PGUSER -c "$DAEMON restart -o '-i' -D '$PGDATA' -s -m fast -l $PGLOG"
       echo "ok"
       ;;
 status)
       su - $PGUSER -c "$DAEMON status -D '$PGDATA'"
       ;;
 *)
       # Print help
       echo "Usage: $0 {start|stop|restart|status}" 1>&2
       exit 1
       ;;
esac
exit 0

pg_hba.conf

接続を制御します。最初はlocalしか接続を許可されていません。これをローカルネットワークのみ接続できるようにしてみます。/usr/local/pgsql/data/pg_hba.confを編集します。

host   all all 192.168.1.0  255.255.255.0 trust

これは左から順に

TYPE,DATABASE,USER,IP_ADDRES,IP-MASK,METHOD

になってます。

TYPE localの場合は、ロカール(UNIXドメインソケット)接続で、hostはTCP/IP接続
DATABASE allですべて
USER allですべて
IP_ADDRES   対象のIP
IP_MASK     対象のmask
METHOD 
 trust  無条件に接続を許可する。ユーザー認証はユーザー名のみを使用
 md5    パスワード認証を行う。pg_shadowに登録されている暗号化パスワードを使用する。
 crypt  パスワード認証を行う。pg_shadowに登録されている平文パスワードを使用する。
 regect 接続拒否

それではだめな場合は、8.0の場合postgresql.confの

listen_addresses = '*'

にしてみましょう。

コマンド

これらはpostgresユーザになっておこなってください。

psql -l

データベース一覧表示

createdb データベース名 
createdb testdb --locale=C --encoding=UTF8 --template=template0

データベース作成

dropdb データベース名 

データベース削除

psql データベース名 

データベース接続

pg_dump dbname > /backup/backupfile

バックアップ

psql dbname < /backup/backupfile

リストア dropdbで削除してから。

createuser 

ユーザを作成します。-Pでパスワードのプロンプトを表示します。-dでデータベース作成許可、-Dはデータベース作成禁止です。-aはユーザ作成許可、-Aはユーザ作成不許可です。

SQL

ユーザpostgresqlになってpsql databaseでログイン後行ってください。\qで終了です。
ユーザ一覧の表示

select usename from pg_user;

ユーザ作成

CREATE USER user WITH PASSWORD 'password';

パスワード変更

ALTER USER user WITH PASSWORD password';

ユーザ削除

DROP USER user
\df 関数一覧
\dt テーブル一覧
\dT 型の一覧
\l データベース一覧

VACUUM

PostgreSQLデータベースの掃除と解析をおこなってくれるコマンドです。

vacuumdb test

データベースtestをvacuumします。

EXPLAIN

ちゃんとインデックスを使っているか見ておきましょう。

EXPLAIN sql;
EXPLAIN ANALYZE sql;

ANALYZEをつけていると実際に実行されます。後はVACUUM ANALYZEもしてみて統計情報の更新をしておきます。

ODBC

http://pgfoundry.org/projects/psqlodbc/
http://www.postgresql.org/ftp/odbc/versions/msi/
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html

バックアップ

PostgreSQLのバックアップ&リストア手法その1

リンク

第1回:PostgreSQL のインストール & 設定

参考書籍

PostgreSQL全機能リファレンス


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-15 (木) 17:06:49 (2282d)