【 Cygwin + Postgres インストール後の設定 】

1. ipc-daemon2.exe ( cygserver.exe )
2. システムの初期化
3. システムの起動
4. データベースの作成
5. 外部から接続する為の設定
6. ODBC ドライバ使用上の注意

必須
  • これが無いとなにもできません。バックグラウンドで動作させます

  • ※ postgresql-7.4.2-1 以降では、cygserver.exe を使用しますが、
    その場合環境変数 CYGWIN を作成して値を server として下さい

  •  
    $ ipc-daemon2.exe &
    ( $ /usr/sbin/cygserver.exe & )
    
  • 後で終わらせる時は、ps コマンドで表示される PID を使って kill します

  •  
    $ kill PID
    


  • Cygwin のインストールで、Libs の crypt をインストールする必要があります
    ( cygcrypt-0.dll が必要とメッセージが出る場合があります。最新をインストールして下さい )
    ( setup.exe 2.457.2.2 では、意識しなくてもインストールされるようです )
  • 環境変数の設定と initdb の起動
  • 環境変数は、initdb の引数で指定すれば、必ずしも必要ではありませんが
    設定しておいたほうが、どこにインストールしたかの記録になります

  • Cygwin 内のルートから指定して下さい。以下は、set コマンド で表示した
    時の例です

  •  
    PGDATA=/postgres
    
  • initdb を起動します

  •  
    以下、7.4.5-1 の実行結果です
    
    $ initdb -E EUC_JP
    The files belonging to this database system will be owned by user "lightbox".
    This user must also own the server process.
    
    The database cluster will be initialized with locale C.
    
    creating directory /postgres... ok
    creating directory /postgres/base... ok
    creating directory /postgres/global... ok
    creating directory /postgres/pg_xlog... ok
    creating directory /postgres/pg_clog... ok
    selecting default max_connections... 40
    selecting default shared_buffers... 1000
    creating configuration files... ok
    creating template1 database in /postgres/base/1... ok
    initializing pg_shadow... ok
    enabling unlimited row size for system tables... ok
    initializing pg_depend... ok
    creating system views... ok
    loading pg_description... ok
    creating conversions... ok
    setting privileges on built-in objects... ok
    creating information schema... ok
    vacuuming database template1... ok
    copying template1 to template0... ok
    
    Success. You can now start the database server using:
    
        /usr/bin/postmaster -D /postgres
    or
        /usr/bin/pg_ctl -D /postgres -l logfile start
    
  • -E EUC_JP は、サーバ側のエンコーディングです

  • Postgres は、クライアント側のエンコーディングも指定できるするよう
    になっており、指定方法はいろいろありますが、PostgreSQL ODBC
    Driver 07.01.0006 日本語版(2001/07/13版)を使用する場合は、中で
    EUC_JP <--> SJIS の対応を行なっているようなので、その場合はへ
    たに指定すると予期せぬ問題が起こるので注意して下さい
    ( ODBC から SHOW CLIENT_ENCODING で、EUC_JP と表示されます )

  • ftp://ftp.jp.postgresql.org/ からダウンロードする 7.03.02.00
    Japanese Patch では、ODBC ドライバを使用時に クライアントエンコー
    ディングを SJIS で実行するようになっているようです
    psql でSHOW CLIENT_ENCODING を実行すると EUC_JPと表示されます
    ( ODBC から SHOW CLIENT_ENCODING で、SJSI と表示されます )

  • ユーザは、Windows にログインしているユーザが作成されます。バスワー
    ドはありません


  • SQLの窓からクライアント側のエンコーディングを変更するのは SET CLIENT_ENCODING TO 'encoding'

  • 現在のエンコーディングを表示するのは、SHOW CLIENT_ENCODING

  • デフォルトに戻すのは、RESET CLIENT_ENCODING

  • postgresql.conf の中の client_encoding エントリを 変更する事によってデフォルトを変更できます
    ( postgresql.conf は、PGDATA の中に作成されます )


  • pg_ctl
     
    $ pg_ctl start -l logfile
    

  • これは、postgres をバックグラウンドで起動して、メッセージを logfile
    というファイルに書き込む事を意味しています。logfile はユーザの home
    ディレクトリ内に作成されます

  • -l logfile を指定しない場合は、メッセージは起動したコンソールに表示
    されます。このほうが便利な場合もあります

  • 停止は、pg_ctl stop です。postgresql.conf 等を書き換えて再起動したい
    場合は、pg_ctl restart または pg_ctl reload を使用します
  • $ pg_ctl --help
    pg_ctl is a utility to start, stop, restart, reload configuration files,
    or report the status of a PostgreSQL server.
    
    Usage:
      pg_ctl start   [-w] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"]
      pg_ctl stop    [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
      pg_ctl restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o "OPTIONS"]
      pg_ctl reload  [-D DATADIR] [-s]
      pg_ctl status  [-D DATADIR]
    
    Common options:
      -D DATADIR   location of the database storage area
      -s           only print errors, no informational messages
      -w           wait until operation completes
      -W           do not wait until operation completes
      --help       show this help, then exit
      --version    output version information, then exit
    (The default is to wait for shutdown, but not for start or restart.)
    
    If the -D option is omitted, the environment variable PGDATA is used.
    
    Options for start or restart:
      -l FILENAME             write (or append) server log to FILENAME.  The
                              use of this option is highly recommended.
      -o OPTIONS              command line options to pass to the postmaster
                              (PostgreSQL server executable)
      -p PATH-TO-POSTMASTER   normally not necessary
    
    Options for stop or restart:
      -m SHUTDOWN-MODE   may be 'smart', 'fast', or 'immediate'
    
    Shutdown modes are:
      smart       quit after all clients have disconnected
      fast        quit directly, with proper shutdown
      immediate   quit without complete shutdown; will lead to recovery on restart
    


  • 前回正しく終了しなかった為に「既に起動されている」というメッセージが出た場合は、postgres ディレクトリ
    にある postmaster.pid ファイルを削除して下さい
  • ※ 最新のバージョンでは、pg_ctl: Another postmaster may be running. Trying to start postmaster anyway.
    と表示されて正常に起動される場合もあります

  • PostgreSQL を Windows で使用する為だけに Cygwin を使用している場合は、.bash_profile の最後に
    /usr/sbin/cygserver.exe &
    rm /postgres/postmaster.pid
    pg_ctl start -l logfile

    と記述しておきます
  • 確認事項
  • initdb が正常終了した後、psql -l を実行すると、テンプレートデータペース
    が二つ作成されているのを知る事ができます
    (※うまくいかない場合は先に「外部から接続する為の設定」を行なって下さい )

  • createdb dbname により、データベースを作成する事ができます。これは、
    テンプレートよりデータベースを複製する正しい手段です

  • createdb dbname は 現在のユーザをオーナーとしてデータベースを作成
    します。また、引数の無い createdb は、現在のユーザ名をデータベース
    名とします


  • 設定ファイル
  • この設定は、Cygwin の外である Windows にも該当します。必ず
    postgresql.conf の tcpip_socket エントリを true にする必要があります
  •  
    #----------------------------------------------------------
    # CONNECTIONS AND AUTHENTICATION
    #----------------------------------------------------------
    
    # - Connection Settings -
    
    tcpip_socket = true
    max_connections = 40
    
  • さらに、外部のコンピュータから接続する場合は、pg_hba.conf に host
    エントリを作成しなければなりません

  • 以下は、192.168.1 のネットワークに対して接続を認めるものです
  •  
    # TYPE DATABASE USER IP-ADDRESS   IP-MASK       METHOD
    host   all      all  192.168.1.0  255.255.255.0 trust
    


    オプション
  • Keyset Query Optimization は、PostgreSQL6.4以降7.0未満で使用
    されるものです少なくとも、7.4 では、「無効だ」とログに出力されます

  • Disable Genetic Optimizer もオフにします。PostgreSQL6.4未満の
    場合に使用します

  • Recognize Unique Indexs は オンにします
  • ODBC ドライバ 7.03.02.00 Japanese Patch であれば、デフォルトボタン
    を押せば上記と同じ状態になります

  • ODBC のダウンロード情報は こちら のデータベースエリアを参照して下さい