PostgreSQL(認証)

データベースクラスタの作成

initdb を実行したユーザーがデータベース領域の所有者となる。postgres にて実行。

    [postgres]$ initdb --encoding=UTF-8 --no-locale --data-checksums

--no-locale は、ロケールを利用しない為のオプション、ロケールを利用すると

日本語の並び替えが出来ない場合がある。

--data-checksums は、テーブルやインデックスデータにチェックサムを付加する。

・データベースクラスタ

データや設定ファイル、ログ等を格納する領域をデータベース・クラスタと呼ぶ。

initdb コマンドを実行すると、環境変数 PGDATA に設定したディレクトリ内に、

データベース・クラスタが作成、初期化される。

postgresql.conf設定ファイル
pg_hba.confアクセス制御の設定ファイル
template0データベース作成時のテンプレート
template1データベース作成時のテンプレート
postgresテスト用データベース

postmaster の起動

    [postgres]$ pg_ctl -w start

DB接続時にパスワード要求(md5認証)

・ユーザー作成/パスワード設定
    [postgres]$ psql

      # ユーザー postgres のパスワード設定
      postgres=# alter user postgres with encrypted password 'パスワード';
      # 新規ユーザー作成、パスワード設定
      postgres=# create user ユーザー名 with password 'パスワード' createdb;
      # 確認
      postgres=# select * from pg_shadow;
      postgres=# \q

    [user]$ createdb -U ユーザー名 ユーザー名
・/usr/local/pgsql/data/pg_hba.conf の編集
    [postgres]$ vim /usr/local/pgsql/data/pg_hba.conf

      # TYPE  DATABASE  USER  ADDRESS  METHOD
      # "local" is for Unix domain socket connections only(Unixドメインソケット経由)
      local    all              all                             md5
      # IPv4 local connections:(ネットワーク経由 IPv4)
      host     all              all     127.0.0.1/32   reject
      # IPv6 local connections:(ネッワーク経由 IPv6)
      host     all              all     ::1/128         reject
      # Allow replication connections from localhost, by a user with the replication privilege.
      # replication という名前の仮想データベースへの接続権限
      local    replication  all                                 md5
      host     replication  all     127.0.0.1/32   reject
      host     replication  all     ::1/128             reject
trust認証なし
md5MD5 認証
reject接続拒否
・設定の再読込み
    [postgres]$ pg_ctl reload