* [[PostgreSQL]]
#author("2018-02-15T17:06:49+09:00","default:zzr12000","zzr12000")
* [[PostgreSQL]] [#r9d36ce1]
#contents

** インストール
** インストール [#d36f4fe1]
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等のファイルは確認しておいてください。

** 起動オプション
** 起動オプション [#yc246d79]
 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
ステイタスが表示されます。これはプロンプトで使用してください。

** 自動起動
** 自動起動 [#ef60ea1e]
 #! /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
** pg_hba.conf [#r53f20b7]
接続を制御します。最初は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 = '*'
にしてみましょう。
** コマンド
** コマンド [#k57b351e]
これらは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
** SQL [#ka2e5e32]
ユーザ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
** VACUUM [#uca85fc4]
PostgreSQLデータベースの掃除と解析をおこなってくれるコマンドです。
 vacuumdb test
データベースtestをvacuumします。

** EXPLAIN
** EXPLAIN [#m285159a]
ちゃんとインデックスを使っているか見ておきましょう。
 EXPLAIN sql;
 EXPLAIN ANALYZE sql;
ANALYZEをつけていると実際に実行されます。後はVACUUM ANALYZEもしてみて統計情報の更新をしておきます。

** ODBC
** ODBC [#q693a13d]
http://pgfoundry.org/projects/psqlodbc/~
http://www.postgresql.org/ftp/odbc/versions/msi/~
http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html~
** バックアップ
** バックアップ [#e8938f4e]
[[PostgreSQLのバックアップ&リストア手法その1>http://www.atmarkit.co.jp/fdb/rensai/postgresql/04/pgtune4-1.html]]~

** リンク
** リンク [#h9c8ab58]
[[第1回:PostgreSQL のインストール & 設定>http://www.stackasterisk.jp/tech/dataBase/postgresql01_01.jsp]]~
** 参考書籍
** 参考書籍 [#naae1358]
[[PostgreSQL全機能リファレンス>http://www.amazon.co.jp/exec/obidos/ASIN/4774118117/worried-22]]~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS