EC2(Amazon Linux AMI)へのPostgreSQLのインストールと設定
PostgreSQLの設定にだいぶ手間取ったので、 次からすぐに設定できるようにメモ。
インストール
yumにはPostgresSQLが準備されてないので、rpmからとってくる。 今回インストールしたのはPostgresSQL-9.6.
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-ami201503-96-9.6-2.noarch.rpm sudo rpm -ivh pgdg-ami201503-96-9.6-2.noarch.rpm sudo yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib sudo /etc/init.d/postgresql-9.6 initdb sudo /etc/init.d/postgresql-9.6 start
公式にDL用のコマンドジェネレータがあるので、違うバージョンをダウンロードしたいときはこちらから。 PostgreSQL: Linux downloads (Red Hat family)
常に起動したいときは以下もたたいておく。
chkconfig postgresql-9.6 on
ここまでで、以下のコマンドでpsql(PostgreSQL)に接続できるようになる。
sudo -u postgres -i psql
パスワード設定とアプリケーション用ユーザの設定
PostgresSQLは最初「Unixユーザ名」と「PostgresSQLのユーザ」が一致しないとログインできない Peer認証というのになっている。
Postgresユーザでアプリが起動するとは限らないし、sudo
とかしたくない。
新しいユーザを作り、sudo
しないでshellからpsqlにログイン&アプリケーションからつなげるようにしていく。
最初はpostgresユーザしかいないのでpostgresユーザで入る
sudo -u postgres -i psql
パスワードの設定とアプリケーション用ユーザの作成
-- パスワードの設定 \password -- ここでパスワードをきかれるので設定する -- ユーザを作る CREATE ROLE ユーザ名 LOGIN CREATEDB PASSWORD 'ここにパスワード'; -- ↑のユーザが管理したいdbを作る CREATE DATABASE データベース名 OWNER ユーザ名;
ユーザを作ったら、psqlの設定を-Uで選択するユーザをUnixユーザ名と関係なく指定できるよう 以下の設定を変更する。
amazon linuxの場合は以下のパスに設定ファイルがあるが、 OSが違う場合は違うところにあるので注意。
sudo emacs /var/lib/pgsql/9.6/data/pg_hba.conf
以下のように変更
# local all all peer local all all md5 # localhostからのアクセスをパスワード認証にしたい場合はこちらも変更 # host all all 127.0.0.1/32 ident host all all 127.0.0.1/32 md5
これでパスワード認証ができるように。 詳しい設定方法は以下を見ればわかる。 https://www.postgresql.org/docs/9.6/static/auth-pg-hba-conf.html
設定が完了したらpsqlをリスタートする。
sudo /etc/init.d/postgresql-9.6 restart # reloadでも大丈夫そう # sudo /etc/init.d/postgresql-9.6 reload # 以下でログイン可能に psql -U ユーザ名 -d データベース名 -h localhost;
PostgresSQLのconnection URI
以上の設定で
postgresql://ユーザ名:パスワード@localhost:5432/データベース名
でアクセスできる。
おまけ
amazon linuxでPostgreSQL使おうとしてるけど設定めんどくさすぎてハゲそう
— くー@( o・ω・)ノTDD!TDD! (@cocodrips) 2017年9月4日
psqlのユーザ認証ををpeer->md5に変更したらpasswordを設定してなかったからどこにも入れなくなった( ・ὢ・ )
— くー@( o・ω・)ノTDD!TDD! (@cocodrips) 2017年9月4日
Peer認証おぼえた
— くー@( o・ω・)ノTDD!TDD! (@cocodrips) 2017年9月4日