Amazon LinuxにインストールしたPostgreSQLを使えるようにする

参考

記事の作成にあたって以下の記事を参考にさせていただきました。
http://jason4zhu.blogspot.com/2017/10/airflow-notes-from-0-to-1.html
https://dev.classmethod.jp/cloud/aws/install-postgresql-on-aws-ec2/ http://www.utsushiiro.jp/blog/archives/327

目的

インストールが完了したPostgreSQLを使用できるようにしていく。
なお、学習環境なのであまりセキュリティに関しては考えないでおく。

手順

いろいろと弄っていたので手順が正確ではないかもしれないが、下記でテーブルの作成が行える状態まで設定を行うことが出来た(と思う)。

最初に、PostgreSQLをインストール後デフォルトで作成されているpostgresユーザのパスワードを変更する。
合わせて、実際に使用するpostgresuserを作成した。

sudo passwd postgres
sudo adduser postgresuser
sudo passwd postgresuser

次に下記コマンドでPostgreSQL内にpostgresuserユーザを作成した。
この際に、実際に使用するmydbデータベースの作成時にpostgreuserというデータベースも作成した。
postgreuserデータベースがないと何かでエラーが出た気がするけども正直よくわからない 。

createuser -AdPE postgresuser
createdb -E UTF8 -U postgresuser -W mydb
createdb -E UTF8 -U postgresuser -W postgreuser

PostgreSQLにpostgresユーザで接続し、postgresユーザのパスワード変更と、postgresuser ロールの作成(名前が紛らわしい)、postgresuserロールへのall権限の追加を行った。

sudo -u postgres psql postgres

下記操作はpsql内で実行。

ALTER USER postgres WITH ENCRYPTED PASSWORD 'some password';
CREATE ROLE postgresuser WITH LOGIN ENCRYPTED PASSWORD 'some password';
GRANT all ON DATABASE mydb TO postgresuser;

psqlから抜ける。

Ctrl + D

peer認証という認証方式が新規に作成したユーザでのログインを阻んでくるので、パスワード認証に変更する。
(このへんはちょっと知識が足りません…)

vimでpg_hba.confを修正する。

sudo vim /var/lib/pgsql96/data/pg_hba.conf

pg_hba.confを下記のようにpeerとidentの部分をmd5に変更した。

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

PostgreSQLサービスのリスタート

sudo service postgresql96 restart

あとは、postgresuserユーザでpsqlに接続してテーブルを作成したりして確認する。

sudo -u postgresuser psql mydb

create tableなど…