PostgreSQL の初期設定

1. CentOS 付属の PostgreSQL は、8.1.11 のため 8.4.x をインストールする


  下記サイトより、pgdg-centos-8.4-x.noarch をダウンロードし、yum による管理を行う。

- pgdg-centos - PostgreSQL 9.0.X PGDG RPMs for CentOS - Yum Repository Configuration
  http://yum.pgsqlrpms.org/reporpms/repoview/pgdg-centos.html

$ sudo rpm -ivh pgdg-centos-8.4-x.noarch.rpm
$ sudo yum check-update
$ sudo yum install postgresql-server

  次に、/etc/rc.d/init.d/postgresql の initdb のオプションを追加する。
  -E UTF8 --no-locale

--- /etc/rc.d/init.d/postgresql    2010-03-17 15:09:56.000000000 +0900
+++ /etc/rc.d/init.d/postgresql    2010-04-22 11:06:43.000000000 +0900
@@ -243,7 +243,7 @@
             fi
 
             # Initialize the database
-            $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
+            $SU -l postgres -c "$PGENGINE/initdb -E UTF8 --no-locale --pgdata='$PGDATA' --auth='ident'" >> "$PGLOG" 2>&1 < /dev/null
 
             # Create directory for postmaster log
             mkdir "$PGDATA/pg_log"

2. DB の初期化、PostgreSQL の起動を行う

$ sudo service postgresql initdb
$ sudo chkconfig postgresql on
$ sudo service postgresql start

3. ユーザの追加


  username というユーザを追加する場合

$ sudo -u postgres createuser -P username
Enter password for new role: <パスワード>
Enter it again: <パスワード>
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

4. DB の作成


  dbname という DB を、username オーナーで作る場合。

$ sudo -u postgres createdb -E UTF-8 -O username dbname

5. 他のサーバからの接続を許可する

$ sudo vi /var/lib/pgsql/data/postgresql.conf

  他のサーバ全てからの接続を許可する場合

listen_addresses = '*'


  いくつかのサーバを指定する場合(「,」でつなぐ)

listen_addresses = 'localhost,192.0.2.1'

$ sudo vi /var/lib/pgsql/data/pg_hba.conf

  下記を追加し、パスワード認証で接続を許可する。

host    all         all         192.0.2.1/32         md5

Oracle,MySQL,PostgreSQL の性能比較表

- Comparison of Oracle, MySQL and PostgreSQL DBMS
  http://www-css.fnal.gov/dsg/external/freeware/mysql-vs-pgsql.html

  結構細かい点まで比較してある.わかりやすい資料.

ポスグレが吐いてるクエリを知る

  http://blog.xole.net/article.php?id=361

  PostgreSQL が実際に吐いているクエリを確認する方法.

psql -E -U postgres

  の -E がポイント.

「OSS 性能・信頼性評価/障害解析ツール開発」プロジェクト成果報告

  http://www.ipa.go.jp/software/open/forum/development/download/051115/

  DB 層にしか興味はないのだけれども,PostgreSQL 8.1 は 8.0 より 1.5 倍速いとか,
  MySQL クラスタはノードを 3 台にしないと単体より性能が高くならないとか.

Solaris 10 で PostgreSQL をサポートへ

  http://japan.cnet.com/news/ent/story/0,2000047623,20091147,00.htm

  ありゃま.PostgreSQL サポートですか.
  MySQL のサポートはしませんよね.これじゃ.

PostgreSQL の psql コマンドのヒストリ機能を複数行に対応させるパッチ

  http://www.mono-space.net/blog/blosxom.cgi/pgsql/051016_psql_history2.htm

  - via: よくきたblog
  http://blog.poyo.jp/archives.php/id+1129450431

  これいいなぁ.MySQL の mysql コマンドも複数行に対応していないんだよな.

共用サーバの PHP スクリプトからデータベースに安全に接続する方法

  http://ns1.php.gr.jp/pipermail/php-users/2003-February/013594.html

- via: サーバ管理者日誌
  http://www.nantoka.com/~kei/diary/?200506b&to=200506142#200506142

  PostgreSQL での話.$HOME に .pgpass を置いて

hostname:port:database:username:password

  の形式で書いておく (パーミッションは 0600).

- ref.: .pgpass
  http://developer.postgresql.org/docs/postgres/libpq-files.html

  MySQL でも $HOME/.my.cnf でいけたりするのかは不明.今度験してみる.

SQL チュートリアル

- A Gentle Introduction to SQL
  http://sqlzoo.net/

  SQL Server, Oracle, MySQL, DB2, Mimer SQL, PostgreSQL and Access に対応した SQL チュートリアル.

PostgreSQL の独自機能 VACUUM は,SQLite でも使える

- Query Language Understood by SQLite: VACUUM
  http://www.sqlite.org/lang_vacuum.html

PostgreSQL オフィシャルマニュアル

  PostgreSQL オフィシャルマニュアルの HTML 版
  流れとしては,HTML -> 書籍 らしい.

- PostgreSQL 7.1 日本語マニュアル
  http://osb.sra.co.jp/PostgreSQL/Manual/

- PostgreSQL オフィシャルマニュアル
  4844315897
  amazon.co.jp 詳細ページへ
  PostgreSQL Global Development Group (著), 日本PostgreSQLユーザー会 (翻訳), SRA (翻訳)
  インプレス
  4,980 円
  ISBN: 4844315897
  2002/01