* [[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]]~