PostgreSQLのインストールと各種設定

PCの不慮の事故により、バックアップを取っていなかったために仮想マシンのサーバをすべて再構築する羽目になってしまってからOSをインストールしての基本的な設定と、SSH関連の設定を行って以来放置していたのですがとりあえずPostgreSQLのインストールと設定を行いました。
1度インストールするとなかなかやる機会がなく、今後同様の事態に陥っても苦労せずに済むように手順をメモしておきます。

OSはCentOS6で基本的には標準のyumレポジトリに登録されているPostgreSQL8.4をyumを利用してインストールします。

PostgreSQLのインストール


su -
yum -y install postgresql-server

yum経由でインストールするとpostgresユーザが自動的に作成されるので当該ユーザの確認とパスワードの設定をおこなう


id postgres
passwd postgres

サービス名の確認


chkconfig --list | grep postgres

データベースの初期化を行いデータベースディレクトリの作成を行う


service postgresql initdb

postgresユーザにスイッチして以下の作業を行う

■/var/lib/pgsql/data/postgresql.confの編集
listen_addressをコメントアウトlocalhostから任意のアドレスに変更しネットワーク接続を可能にする


#listen_addresses = 'localhost'

listen_addresses = '*'


■/var/lib/pgsql/data/pg_hba.confファイルを編集
pg_hba.confファイルを編集しアクセス許可の設定を行う。
同一ネットワーク内からのパスワード認証によるアクセスを許可する。(IPv6は利用しないのでとりあえずreject)に設定。


#local
local all all ident
#ipv4
host all all 127.0.0.1/32 password
host all all www.xxx.yyy.zzz/24 password #←IPアドレスは自身のネットワーク環境に合わせて変更すること
#ipv6
host all all ::1/128 reject

ファイアウォールの設定


su -
vi /etc/sysconfig/iptables
以下の一文をCOMMITの前のいずれかの行に追加する
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT


PostgreSQLの起動


service postgresql start

postgresユーザでログインしデータベースの一覧の確認とパスワードを設定する。


su - postgres

データベースの確認


psql -l

パスワードの設定と確認


psql
alter user postgres with password '任意のパスワード';
select usename, passwd from pg_user;

パスワードによる接続が許可されるか確認


psql -U postgres -h www.xxx.yyy.zzz

pg_hba.confファイルを開きlocalからのアクセスもパスワード認証に変更する


local all all password

PostgreSQLの再起動


su -
service postgresql restart

ローカルからの接続確認


su - postgres
psql -U postgres

OS起動時に自動的に起動するようにするには以下のように設定する


su -
chkconfig postgresql on

テスト用のユーザ作成とデータベースの作成


su - postgres
createuser -P hoge #← -Pはパスワードの設定を行うパラメータ
新しいロールのパスワード:###新規ユーザのパスワード
もう一度入力してください:###新規ユーザのパスワード
新しいロールをスーパーユーザとしますか? (y/n)n
新しいロールにデータベース作成権限を与えますか? (y/n)y
新しいロールにロールを作成する権限を与えますか? (y/n)n
パスワード: ###postgresユーザのパスワード

createdb -O hoge hogedb #←データベースの作成(-Oで所有者を先ほど作成したhogeユーザに設定)

新ユーザでの接続確認


psql -U hoge hogedb

接続確認で接続ができればOKです。

かなり雑ですがメモなので。。。