PostgreSQLはじめのいっぽ
MySQLにばっか甘えてきてPostgreSQLの使い方がわからなかったので最初の流れとかメモっときます。
ここを参考にさせていただきました。
http://dev.classmethod.jp/cloud/aws/install-postgresql-on-aws-ec2/
PostgreSQLではユーザのことをロールと呼ぶっぽい。
初期化
PostgreSQLを使うには、まずdatabaseの初期化処理が必要です。以下を実行しておきます。
$ initdb
自動起動設定
PostgreSQLをchkconfigで自動で起動する設定をしておく。
$ sudo /sbin/chkconfig --list|grep postgresql $ sudo /sbin/chkconfig postgresql on $ sudo /sbin/chkconfig --list|grep postgresql
ランレベルの2,3,4,5がonになったことが確認できればokです。
ユーザ設定
postgresユーザのパスワードをアップデートします。
$ sudo passwd postgres
これでログインできるようになります。
$ su - postgres パスワード: -bash-4.1$ exit
conf設定
設定ファイルをいじっていきます。
/var/lib/pgsql9/data/postgresql.conf
の、listen_addresses
のコメントアウトを外して以下のように変更します。
listen_addresses = '*' # what IP address(es) to listen on;
/var/lib/pgsql9/data/pg_hba.conf
を、以下のみが有効になるようにコメントアウト・編集します。
local all all trust host all all 0.0.0.0/0 md5
設定が大丈夫かどうか確認してみます。以下を叩いてどちらもOKが返って来れば大丈夫。
$ sudo /sbin/service postgresql stop $ sudo /sbin/service postgresql start
ロール・DBの作成
postgres
ユーザ以外に実際にDBで作業するロールを追加します。
$ su - postgres $ createuser -AdPE username
そしたらさきほど作成したロールがいじるDBを作成します。
$ createdb -E UTF8 -U username -W dbname
これで作成完了。postgres
ユーザからec2のユーザに戻ります。OS側でもさっきのDBのロールに紐づくユーザを設定しておきます。
$ sudo adduser username $ sudo passwd username
接続確認
さっきのユーザにログインしてpsql -lを叩くと、作成したDBが確認できると思います。
$ su - root $ psql -l
OSのユーザでシェルから直接$ psql -l
とか叩けるのはOSのユーザとDBのロールが対応してるからなのか。