postgresql のインストールと初期化
ec2-user$
sudo yum -y install postgresql96
sudo yum -y install postgresql96-devel
sudo yum -y install postgresql96-server
sudo /etc/init.d/postgresql96 initdb
postgresユーザに切り替え、DBユーザーを作成
ec2-user$
sudo -u postgres -i
-bash-4.2$
psql
createuser -d -U postgres -P [USERNAME]
logout
【重要】pg_hba.conf を変更し、接続できるクライアントを設定する
pg_hba.conf
については、他ホストから接続するための設定 が詳しいのでそちらを参照してください。
ec2-user:~/environment/project
sudo vi /var/lib/pgsql96/data/pg_hba.conf
pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
- host all all 127.0.0.1/32 ident
+ host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
# local replication postgres peer
# host replication postgres 127.0.0.1/32 ident
# host replication postgres ::1/128 ident
最初、local all all
をtrust
に変更しましたが、Rails->PostgreSQL
はTCPを利用したアクセスになるため host all all 127.0.0.1/32
を変更する必要があるようです。
PostgreSQLデータベースにアクセスできないときの対処法 - のほほん徒然
RailsがPostgreSQLにアクセスする際にUNIX socketではなくTCP socketを利用していて,TCPを利用したアクセスではpasswordによるユーザ認証がPostgreSQLの設定で許可されていないことが原因のようです.
postgresqlの起動とDBセットアップまで
sudo /etc/init.d/postgresql96 start
rails db:setup
参考
- AWS Cloud9でPostgreSQLを使ったrailsプロジェクトを立ち上げる - niki12260714の日記
- AWS Cloud9でPostgreSQLに対しrake db:migrateが失敗する - niki12260714の日記
留意点
-
Cloud9のPostgresをアップデート。 - Qiita で説明されている
pg_hba.conf
のパスは、
sudo vi /etc/postgresql/9.6/main/pg_hba.conf
パッケージ管理も apt-get
をつかっていました。公開時点(2017/09/16)から1年ほどしか経過していません。
今後のアップデートによって変更される可能性に注意しておく必要があります。
サービス周りのコマンド集
DB初期化
sudo /etc/init.d/postgresql96 initdb
スタート
sudo /etc/init.d/postgresql96 start
再起動
sudo /etc/init.d/postgresql96 restart