こんばんは。通勤途中の電車の中で勉強用の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になっていて、こちらも起動できなかったのですが、オーナーを変更することで起動できました。はっきりとは覚えていませんが、他のアプリケーションをインストールするタイミングでオーナーを書き換えてしまったのが元々の原因だったのかなあと思われます。