niki12260714の日記

フリーランスのITエンジニアの呟き。

AWS Cloud9でPostgreSQLに対しrake db:migrateが失敗する

ここら辺、自動でやってくれるDBとかで開発していたんで、知らないから躓いたところでした。
前回の記事の続きです。

niki12260714.hatenablog.com

ここの記事で、「confファイルが見つからなかった」とありますが、ここが問題でした。

migrateのファイルを作り、「rake db:migrate」を打つと、「FATAL: Ident authentication failed for user」というエラーが出て、rakeが失敗します。
調べてみると、見つからなかった「pg_hba.conf」というのが認証ファイルで、ここのデフォルト値が「OSのユーザーIDとpostgreのユーザーIDが一致していれば受け入れる(ident)」になっているのが問題ということ。
なので、ここを「パスワード認証(md5)」か「無条件で信頼(trust)」に書き換える必要があります。
しかしどうにも見当たらないので、ここは講師の人に聞いたところ

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

でいけますよ、ってことで、行けました!
※sudoでやらないと拒否されるフォルダの中にあるから、「vim」だけで打っていった時に見当たらなかったのだと思われる

で、md5に書き換えたのですが、そうすると今度は「sudo -u postgres psql」が効かなくなりました。
正確には、これを打つとパスワードを聞かれるのですが、postgresロールのパスワードを入れても拒否される。
ここは調べてもちょっと分からなかったんですが、Unixのroot権限が通らなくなったのが原因らしい?
仕方ないってことで、先ほどの「pg_hba.conf」を全てtrustに変更するとpsqlを打てるようになりました!
ここでrake db:migrateを実行し、無事に通りました。

※ちなみにconfを書き換えたら「sudo /etc/init.d/postgresql94 restart」でポスグレを再起動する必要があります
※Cloud9は暫く触っていないとポスグレを止めちゃうので、通らなくなったと思ったら「sudo /etc/init.d/postgresql94 start」で開始する必要があります