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など…