PostgreSQLのインストール

Contents

ダウンロード&インストール

標準リポジトリで配布されているPostgreSQLはバージョンが古いので、PostgreSQLのパッケージ配布サイト http://yum.postgresql.org/rpmchart.php から最新版をインストールする。

DB初期化、起動

Version 9.4

2014/12/18にPostgreSQL 9.4がリリースされた。
ダウンロード~起動設定は以下の通り。

…で良いはずなのだが、9.3を消してインストールしたせいなのか「initdb: ロケール名”–no-locale”は無効です。」とログにメッセージが出力されinitdbに失敗する。ちなみに–no-localeの前に–encoding=UTF8と書くとUTF8は無効とか出力されたので、引数が何だろうと上手く渡せていないようだ。
仕方が無いので/var/lib/pgsql/9.4/data配下を消してからpostgresユーザになり直接initdbを実行した。

その後の「service postgresql-9.4 start」は正常に実行されたので、リブートした後の起動も大丈夫だろう。
/etc/init.d/postgresql-9.4 のシェルをinitdbが正常に動くよう書き換えても良いが、一度しか使わないし、別なマシンに新たにインストールした時はまたシェルを書き換える必要があるので、インストールしているマシンのシェルを書き換えて保存しても意味が無い。上記の通りinitdbはserviceコマンドを使わずにやるのが良いだろう。

パスワード設定

初期設定

postgresql.confの設定

リモートから接続する場合はpostgresql.confを設定する。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all

外部のサーバからアクセスする(WEBサーバとDBサーバが別になっておりWEBのプログラムからDBアクセスしたり、クライアントのDBツールを使ったりするなど)場合、「#listen_addresses = ‘localhost’」 の#を外しlocalhostを*に変更する。
なお、NICが複数刺してありどれから受け付けるのか指定したい場合は、*ではなくそのNICのIPアドレスを指定する。

pg_hba.confの設定

pg_hba.confにて認証の定義をする。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

他のサーバから接続する場合は、「host all all 192.168.1.1/24 md5」 等を追加する。

peer:ログイン中のユーザ名と同じDBのユーザ名を使う
ident:クライアントOSのユーザ名と同じDBのユーザ名を使う
これらOSのユーザ名とDBのユーザ名のマッピングを変更したい場合はpg_ident.confで設定する。
md5:Postgresのパスワード認証を行う。passwordも使えるが暗号化されないのでSSLの暗号化と併せて使用すべきであり、通常は利点がないのでパスワード認証を行うならmd5が妥当だろう。
また、WEBプログラムからDBアクセスするなどといった形が多くログイン認証を使う事は少ないので、デフォルトで設定されているpeer/identはmd5に書き換えて、Postgresの認証を使った方が良いだろう。

サービス登録

備考

ユーザ作成

以下のどちらでもデフォルトでパスワードを暗号化する設定になっている。デフォルトを変更するにはpostgresql.confのpassword_encryptionにonまたはoffを設定する。

コマンドラインでユーザ作成

スーパーユーザのユーザを作成する

※パスワードを三回入力するが、最初のパスワード入力は新しいユーザに設定するパスワード、二度目のパスワード入力は確認の為にもう一度入力し、三度目に入力するパスワードは接続ユーザ(この例ではpostgres)のパスワード。

SQLでユーザ作成

スーパーユーザのユーザを作成する

※CREATEUSERロールを付与する事によりスーパーユーザになる。

パスワード変更

コメントをどうぞ

入力されたメールアドレスは公開されません。

This site uses Akismet to reduce spam. Learn how your comment data is processed.