ローカルPostgreSQLに接続できません 質問する

ローカルPostgreSQLに接続できません 質問する

ローカル開発環境を壊してしまいました。

すべてのローカル Rails アプリで次のエラーが発生します:

PGError
could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

何が原因なのか全く分かりません。

解決策を探している間に、バンドルされているすべての gem を更新し、システム gem を更新し、MacPorts を更新しました。しかし、何も変わりません。

他のユーザーも、OSX Leopard から Lion にアップグレードするときに、どのバージョンの Postgres を使用すべきか (つまり、OSX バージョンまたは MacPorts バージョン) が不明なためにこの問題が発生したと報告しています。私は Lion を数か月使用していますが、今このようなことが起こるのは奇妙に思えます。

まず何が問題なのか理解しないまま、あまりいじり回すのは気が進みません。これを系統的にデバッグするにはどうすればよいでしょうか?

システムにいくつの PostgreSQL バージョンがあり、どのバージョンがアクセスされているか、またそのバージョンがどこにあるのかをどのように確認すればよいでしょうか? 間違った PostgreSQL が使用されている場合は、どうすれば修正できますか?

初心者のような質問で申し訳ありません。まだ仕組みを学んでいるところです。何かアドバイスがあればよろしくお願いします。

編集

以下に提案とコメントに基づいたいくつかの更新を示します。

実行しようとしましたpg_lsclustersが、エラーが返されましたcommand not found

次に、pg_hba.conf ファイルをローカルにコピーしようとしたところ、次の 3 つのサンプル ファイルが見つかりました。

/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample

つまり、PSQL の 3 つのバージョンがインストールされていることになりますか? Macports、OSX のデフォルト、そして???。

次にlaunchctl起動スクリプトを検索したところps -ef | grep postgres

0    56     1   0 11:41AM ??         0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
  500   372     1   0 11:42AM ??         0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
  500   766   372   0 11:43AM ??         0:00.37 postgres: writer process                                                                                                                                                                                                                                                                                                                   
  500   767   372   0 11:43AM ??         0:00.24 postgres: wal writer process                                                                                                                                                                                                                                                                                                               
  500   768   372   0 11:43AM ??         0:00.16 postgres: autovacuum launcher process                                                                                                                                                                                                                                                                                                      
  500   769   372   0 11:43AM ??         0:00.08 postgres: stats collector process                                                                                                                                                                                                                                                                                                          
  501  4497  1016   0 12:36PM ttys000    0:00.00 grep postgres

postgresql84-server.wrapperの内容を投稿しました。http://pastebin.com/Gj5TpP62

実行しようとしましたport load postgresql184-serverが、エラーが発生しましたError: Port postgresql184-server not found

これをどう修正したらよいのかまだよくわかりません。初心者向けのアドバイスをいただければ幸いです。

ありがとう!

編集2

この問題は、daemondo で問題が発生した後に発生しました。ローカルの Rails アプリがクラッシュし、「daemondo gem が見つかりません」というアプリケーション エラーが発生していました。その後、一連のバンドル更新、gem 更新、ポート更新、brew 更新を実行して、問題を見つけようとしました。

このエラーはdaemondoの問題でしょうか?

ベストアンサー1

これは、ファイル権限エラーのように見えます。Unix ドメイン ソケットはファイルであり、他のファイルと同様にユーザー権限があります。データベースにアクセスしようとしている OSX ユーザーに、ソケット ファイルにアクセスするためのファイル権限がないようです。これを確認するために、Ubuntu と psql でいくつかのテストを行って、同じエラーが生成されるようにしました (以下を参照)。

ソケット ファイルとそのディレクトリおよびの権限を確認する必要があります/var。Rails/var/pgsql_socketアプリ (OSX ユーザー) には、これらのディレクトリに対する実行 (x) 権限 (できれば Everyone 権限を付与) が必要であり、ソケットには完全な権限 (wrx) が必要です。 を使用してls -lAd <file>これらを確認できます。これらのいずれかがシンボリック リンクである場合は、リンクが指すファイルまたはディレクトリを確認する必要があります。

ディレクトリの権限は自分で変更できますが、ソケットは postgres によって に設定されますpostgresql.conf。これは と同じディレクトリにありますpg_hba.conf(どのディレクトリか調べる必要があります)。権限を設定したら、postgresql を再起動する必要があります。

# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql'       # dont worry if yours is different
#unix_socket_group = ''                             # default is fine here
#unix_socket_permissions = 0777                     # check this one and uncomment if necessary.

編集:

Google で簡単に検索してみましたが、関連性があるかどうか調べてみてください。これにより、find構成ファイルへのあらゆる試みが失敗する可能性があります。

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html


エラーメッセージ:

pg_hba.conf にユーザーが見つかりません

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

ユーザーのパスワード認証に失敗しました:

psql: FATAL:  password authentication failed for user "couling"

UNIX ソケット ファイルが見つかりません:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Unix ソケットは存在しますが、サーバーはそれをリッスンしていません。

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

UNIX ソケット ファイルのファイル権限が不正です:

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

おすすめ記事