[解決済み] ローカルの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"?
何が原因なのかさっぱりわかりません。
解決策を探している間、私はすべてのバンドルされた gems を更新し、システム gems を更新し、MacPorts を更新しました。喜びはありません。
OSX Leopard から Lion へのアップグレード時に、どちらのバージョンの Postgres を使用すべきか (すなわち、OSX バージョンまたは MacPorts バージョン) の混乱が原因で、この問題を報告している人がいます。私は数か月間 Lion を使用していたので、今になってこのようなことが起こるのは奇妙に思われます。
まず何が問題なのかを理解しないことには、あまりいじくり回したくないのです。どのようにすれば、これを系統的にデバッグできますか?
私のシステム上にある PostgreSQL のバージョン数、アクセスされているもの、そしてその場所をどのように判断すればよいのでしょうか? 間違った PostgreSQL が使用されている場合、どのように修正すればよいのでしょうか?
無知な質問で申し訳ありません。私はまだ、これがどのように機能するか学んでいます! どんなポインタでもありがとうございます。
EDIT
以下の提案とコメントに基づいて、いくつかのアップデートを行いました。
私は
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
ということは、3つのバージョンのPSQLがインストールされているのでしょうね?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
.
私はこれを修正する方法をまだ非常に混乱しています。そして、どんなquot;for dummies"ポインタにも感謝します。
ありがとうございます。
EDIT2
この問題は、daemondo でいくつかの問題が発生した後に始まりました。私のローカルの Rails アプリは、"daemondo gem can not be found" という行のアプリケーション エラーでクラッシュしていました。その後、私は一連のバンドル更新、gem更新、ポート更新、およびbrew更新を行い、問題を見つけようとしました。
このエラーは、daemondo の問題でしょうか?
どのように解決するのですか?
これは本当にファイルのパーミッションエラーのように見えます。 Unix ドメイン ソケットはファイルであり、他のものと同様にユーザー パーミッションがあります。 データベースにアクセスしようとする OSX ユーザーは、ソケット ファイルにアクセスするためのファイル権限を持っていないように見えます。 これを確認するために、私はUbuntuとpsql上でいくつかのテストを行い、同じエラーを生成することを試みました(以下に含まれる)。
ソケット ファイルとそのディレクトリのパーミッションを確認する必要があります。
/var
と
/var/pgsql_socket
. Railsアプリ(OSXユーザ)はこれらのディレクトリに対して実行(x)権限(できれば全員に付与)を持ち、ソケットはフル権限(wrx)を持つ必要があります。また、ソケットにはフルパーミッション(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.
EDITです。
私は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"?
関連
-
[解決済み] Rails ExecJS::ProgramError in Pages#home?
-
[解決済み] macOSアップデート後、Gitが動作しない(xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?
-
[解決済み] Postgresがサーバーに接続できない
-
[解決済み】Mac OS XでPostgreSQLサーバーを起動するには?
-
[解決済み】PostgreSQLのエラーです。Fatal: ロール "username" が存在しません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み] AWS S3です。アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレスされている必要があります。
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".
-
[解決済み] django.db.utils.OperationalError サーバーに接続できませんでした。
-
[解決済み] Postgresがサーバーに接続できない
-
[解決済み] psql: サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (Mac OS X)
-
[解決済み] OSX 10.7 Lionへのアップグレード後のPostgresqlの修復について