PostgreSQL初期設定 in EC2

以下を参考にさせていただきました。

http://dev.classmethod.jp/cloud/aws/install-postgresql-on-aws-ec2/

手順

PostgreSQLをインストールします。

$ sudo yum update -y
$ sudo yum install -y libxslt.i686
$ sudo yum install -y postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs

バージョンを確認

$ psql --version

PostgreSQLのdataを初期化します。これは、PostgreSQLを使う上で一番最初に叩く必要があります。

$ sudo /sbin/service postgresql initdb

起動・停止・再起動は以下のようにします。

$ sudo /sbin/service postgresql start
$ sudo /sbin/service postgresql stop
$ sudo /sbin/service postgresql restart

chkconfigをonにしておきます。

$ sudo /sbin/chkconfig --list | grep postgresql
postgresql      0:off 1:off 2:off 3:off 4:off 5:off 6:off
$ sudo /sbin/chkconfig postgresql on
$ sudo /sbin/chkconfig --list | grep postgresql
postgresql      0:off 1:off 2:on  3:on  4:on  5:on  6:off

initdbやったら勝手に作成されるpostgresユーザのパスワードを設定してログインしてみます。PostgreSQLでは、このpostgresユーザがマスターユーザ的な扱いになるようです。

$ sudo passwd postgres
$ su - postgres

postgresユーザのまま、今度はPostgreSQLの設定ファイルをいじっていきます。

$ vi /var/lib/pgsql9/data/postgresql.conf

まずはpostgresql.conflisten_addresses*にします。

listen_addresses = '*'                  # what IP address(es) to listen on;

今度はpg_hba.confをいじっておきます。以下をファイルの最後に追記します。

$ vi /var/lib/pgsql9/data/pg_hba.conf
## ファイル内有効行全コメント→末尾に追加
local   all     all     trust
host    all     all     0.0.0.0/0       md5

ユーザ設定

では今度は実際のアプリケーションで使うユーザの作成・設定をしていきます。

実行ユーザはpostgresで。

$ su - postgres

以下のようにしてユーザを作成できます。

$ createuser -AdPE testuser

そしたら以下のようにしてそのユーザが使うデータベースを作成します。

$ createdb -E UTF8 -U testuser -W testdb

次に、exitしてLinux側でもユーザを作成しておきます。PostgreSQLは基本的にLinuxユーザとDBのユーザが一致するようになっています。

$ sudo adduser testuser
$ sudo passwd testuser

確認・使い方

ここまでで初期設定は終了です。確認してみます。

ログインします。

$ su - testuser

以下で、データベースの一覧を表示できます。

$ psql -l

データベースへの接続。SQLを叩けるプロンプトに入ります。

$ psql -d database_name