PostgreSQLでの運用

adiaryをPostgreSQLで運用する場合には adiary.conf.cgi を次のように書き換えます。

# 擬似データベースの場合
#<$DB = loadpm('DB_pseudo', "<@data_dir>db/")>   ←コメントアウト

#PostgreSQL の場合(データベース名、ユーザー名、パスワード)
<$DB = loadpm('DB_pg', 'database=adiary', 'adiary', 'test', 1.connection_pool)>
↑有効にする

データベースの文字コードと運用時の文字コードを一致させるように注意してください。

ローカル以外のPostgreSQLに接続する場合

database=adiary の部分を次のように書き換えます。

<$DB = loadpm('DB_pg', 'database=adiary;host=mysql.db-net.tdl', (略))>
<$DB = loadpm('DB_pg', 'database=adiary;port=12345',(略))>
<$DB = loadpm('DB_pg', 'database=adiary;host=10.45.67.89;port=12345',(略))>

コロン「":"」ではなくセミコロン「";"」です。ご注意ください。

環境設定メモ。

  1. PostgreSQL をインストールします。
  2. DBIDBD::Pg をインストールします。
  3. データベースを初期化(実行ユーザーがデータベースのsuper user。root不可)
    最近のディストリビューションはデーモンを起動すれば勝手に作成してくれます。
    標準の文字コードを指定する場合は次のようにします。
    pgsql~$ initdb /data/directory
    pgsql~$ initdb /data/directory --locale=ja_JP.eucJP
    
  4. スーパーユーザー名と同一のデータベースを作成します。
    pgsql~$ createdb pgsql
    
  5. コンソールに入ります。
    pgsql~$ psql [database name] [user name]
    
  6. コンソール上で、pgsql ユーザーにパスワードを設定します。
    pgsql=# ALTER USER pgsql ENCRYPTED PASSWORD 'password';
    
  7. 一度コンソールを脱出し、データベースディレクトリの pg_hba.conf を編集します。
    変更前)local   all    all           trust
    変更後)local   all    all           md5
    
    trust となっている部分はすべて md5 に変更する(そうしないとパスワード未承認でつながってしまう)。
  8. 変更したら、PostgreSQL デーモンを再起動します。
  9. 再びコンソールに入ります
    pgsql~$ psql pgsql pgsql
    
  10. adiary用のユーザーとデータベースを作成します。
    pgsql=# CREATE USER adiary ENCRYPTED PASSWORD 'password';
    pgsql=# CREATE DATABASE adiary OWNER=adiary ENCODING 'EUC-JP';
    

コマンドのメモ

データベース一覧(文字コード付)

pgsql~$ psql -l

困ったときのマニュアル