Cloud9でPostgreSQLを使えるようにする
Cloud9でPostgreSQLを利用するときに詰まったので、忘備録。 まずPostgreSQLを起動。
参考サイト
Cloud9でPostgreSQLを利用しHerokuにRails5.xをデプロイした時の手順
PostgreSQLをyumでインストール(yumとrpmの復習込み) - 薮蛇なエンジニアの開発備忘録
$sudo service postgresql start
入っていなかったらインストール。 ちなみにバージョンも確認しておこう
$ psql --versioon
でどうするか yumでインストールすると、最新版が無いことがある。
rpm -iは事前にパッケージをダウンロードして指定するか、パッケージのURLを指定する しかしyum依存関係を解消してインストールしてくれる。 よって基本yumでインストールする。
$ yum list | grep postgres
これでインストール可能なものをインストールする。 表示はこんな感じ。 ちなみに古いバージョンがインストールされている場合は削除しておく。
先程の中から95のバージョンを選択する。
$$ sudo yum install postgresql95-devel postgresql95-server postgresql95-contrib
入れるときは同じバージョンの server,devel,contribの3つをインストールする。
その後DB初期化
$ sudo service postgresql95 initdb
postgresにpostgresユーザーでログイン
$ sudo -u postgres psql
postgresユーザーでpostgresにログインします。 postgresユーザーは、postgresインストール時に自動で作成されています。
ポスグレの中に入ったら
$ CREATE USER [username] SUPERUSER PASSWORD '[password]';
よって usernameというsuperuserを作成。
$UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
\c template1
VACUUM FREEZE;
ポスグレから抜ける
\q
Cloud9の設定にユーザー名とパスワードを保存
echo "export USERNAME=username" >> ~/.profile
echo "export PASSWORD=password" >> ~/.profile
設定を反映
source ~/.profile
config>database.ymlはこんな感じ
default: &default adapter: postgresql encode: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> timeout: 5000 username: username password: <%= ENV['PASSWORD'] %> host: <%= ENV['IP'] %> development: <<: *default database: quiz_app_development test: <<: *default database: quiz_app_test production: <<: *default database: quiz_app_production username: quiz_app password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
エラー
PG::ConnectionBad: FATAL: Ident authentication failed for user "username"
ただ、 Peer認証が有効になってるとrails db:migrateがRailsからできません。 Peer認証が有効になっている場合は、ユーザ名とUnixユーザ名が一致している必要があります。
pg_hba.confファイルを変更する 探す
$ sudo find / -name pg_hba.conf | grep pg_
/var/lib/pgsql95/data/pg_hba.conf