Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

MacにインストールしたPostgresqlが起動できなくなってた件

こんばんは。通勤途中の電車の中で勉強用のRailsサイト(ローカルマシン内)を作っていたのですが、Railsサーバーを再起動したところPostgresqlのエラーが出てしまいました。

PGError (FATAL:  could not open relation mapping file "global/pg_filenode.map": Permission denied

どうやらglobal/pg_filenode.mapというファイルの権限がないみたいです。私の場合このファイルは/usr/local/var/postgres/globalにありました。私はhomebrewでインストールしたのでこのディレクトリになっていますが、データベースのデータが格納されているディレクトリ下にあるようです(pg_ctl -Dで指定するディレクトリ)。

このファイルの権限を確認してみると600だったのですが、オーナーがrootになってました。たしかにこれでは起動ユーザー(自分)はアクセス出来ませんね。よく見ると/usr/local/var以下すべてオーナーがrootになっていたので、すべて自分に変更しました。postmaster.pidを削除して起動コマンドを打つと、起動してくれました。

ちなみに、/usr/local/var/mysqlのオーナーもrootになっていて、こちらも起動できなかったのですが、オーナーを変更することで起動できました。はっきりとは覚えていませんが、他のアプリケーションをインストールするタイミングでオーナーを書き換えてしまったのが元々の原因だったのかなあと思われます。