5

Homebrew 経由で Postgresql をインストールしましたが、クラッシュした後、サーバーを起動できなくなりました。

私が行った場合

 $ pg_ctl start 

私は得る

pg_ctl: no database directory specified and environment variable PGDATA unset

私が行った場合

$ pg_ctl -D /Library/PostgreSQL/data start

私は得る

pg_ctl: could not open PID file "/Library/PostgreSQL/data/postmaster.pid": Permission denied

すべてがうまく機能していましたが、突然、これが起こりました。

上記のデータ フォルダーには、postgres ユーザーの場合は "Everything"、全員の場合は "None" に設定されたアクセス許可があります。

パスは問題ないようです (~/.bash_profile 内)

export PATH=/usr/local/bin:$PATH
4

1 に答える 1

7

最初に Pg を起動したとき、homebrew に起動させましたか、それとも手動で起動しましたpg_ctlか? おそらく、自作スクリプトを使用したりlaunchdpg_ctl. 私は自作 (または Mac OS X はあまり使用しません) を使用しませんが、クイック検索では、Pg の自作インストールは通常、および を介して開始および停止されることが示唆されていlaunchdます~/Library/LaunchAgents/org.postgresql.postgres.plist

手動で管理する場合:

通常、homebrew はどのユーザーとして PostgreSQL を実行しますか? 経由で Pg を起動している場合pg_ctlは、適切なユーザーとして実行する必要があります。ここで自作について見た他の議論の漠然とした記憶から、それはおそらくまたはという名前のユーザーpostgresですpostgres_。以下を使用して再確認します。

ls -ld /Library/PostgreSQL/data

所有しているユーザーが何であるかを確認してから、次を実行します。

sudo -u postgres_ pg_ctl -D /Library/PostgreSQL/data start

...「postgres_」をdatadirの所有者に置き換えます。

アクセス許可エラーが発生する理由は、おそらく変更を再帰的に適用しなかったためだと思います。しないでください。代わりに、正しいユーザーとして Pg を実行してください。

于 2012-07-16T01:24:07.463 に答える