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
ファイアウォールの設定
以下の一文をCOMMITの前のいずれかの行に追加する
su -
vi /etc/sysconfig/iptables
-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です。
かなり雑ですがメモなので。。。