PostgreSQL:なぜpsqlがサーバーに接続できないのですか?



Postgresql Why Psql Cant Connect Server



解決:

エラーは、psqlユーティリティがデータベースサーバーに接続するためのソケットを見つけることができないことを示しています。データベースサービスがバックグラウンドで実行されていないか、ソケットが別の場所にあるか、またはおそらくpg_hba.confを修正する必要があります。

ステップ1:データベースが実行されていることを確認します

コマンドは、オペレーティングシステムによって異なる場合があります。しかし、ほとんどの* ixシステムでは、以下が機能し、実行中のすべてのプロセスの中からpostgresを検索します



ps -ef | grep postgres

私のシステム、mac osxでは、これは吐き出されます

501408 1 0 2Jul15 ?? 0:21.63 / usr / local / opt / postgresql / bin / postgres -D / usr / local / var / postgres -r /usr/local/var/postgres/server.log

最後の列は、サーバーの起動に使用されるコマンドとオプションを示しています。



以下を使用して、postgresサーバーを起動するために使用できるすべてのオプションを確認できます。

男postgres

そこから、オプションが表示されます-Dおよび-rはそれぞれdatadir&logfilename。

ステップ2:postgresサービスが実行されている場合

使用するソケットの場所を検索するために見つけます。これは、/ tmp



sudo find / tmp / -name .s.PGSQL.5432

postgresが実行中であり、ソケット接続を受け入れている場合、上記はソケットの場所を示しているはずです。私のマシンでは、次のようになりました。

/tmp/.s.PGSQL.5432

次に、このファイルの場所を明示的に使用して、psql経由で接続してみてください。

psql -h / tmp / dbname

ステップ3:サービスは実行されているが、ソケットが表示されない場合

ソケットが見つからないが、サービスが実行されていることを確認する場合は、pg_hba.confファイルでローカルソケットが許可されていることを確認してください。

を参照しますdatadirとあなたは見つける必要がありますpg_hba.confファイル。

デフォルトでは、ファイルの下部近くに次の行が表示されます。

#「ローカル」は、Unixドメインソケット接続専用で、ローカルのみ、すべての信頼

表示されない場合は、ファイルを変更して、postgresサービスを再起動できます。


Postgresサービスの開始にエラーがない場合は、次の手順に従ってください

ステップ1:実行中pg_lsclustersは、デバイスで実行されているすべてのPostgresクラスターを一覧表示します

例えば:

Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

ほとんどの場合、ステータスはダウンします。 PostgreSQLサービスを再起動しない場合

ステップ2:pg_ctlclusterを再起動します

#format is pg_ctlcluster sudo pg_ctlcluster 9.6 main start #restart PostgreSQL service sudo service postgresql restart

ステップ3:ステップ2が失敗し、エラーが発生しました

pg_lsclustersの再起動が成功しなかった場合、エラーがスローされます。私のエラーは(ログでエラーを見ることができます/var/log/postgresql/postgresql-9.6-main.log)

致命的:秘密鍵ファイルにアクセスできませんでした '/etc/ssl/private/ssl-cert-snakeoil.key':アクセスが拒否されました `postgres`ユーザーをグループ` ssl-cert`に追加してみてください

ステップ4:postgresの所有権を確認する

それを確認してくださいpostgresはの所有者です/ var / lib / postgresql / version_no / main例:sudo chown postgres -R /var/lib/postgresql/9.6/main/

ステップ5:postgresユーザーがssl-certユーザーグループに属していることを確認する

それは私に起こりました、そして、私が誤ってPostgresユーザーを「ssl-cert」グループから削除したことがわかりました。以下のコードを実行して、ユーザーグループの問題を修正し、権限を修正します

#set user to group back with sudo gpasswd -a postgres ssl-cert#所有権とモードを修正sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key sudo chmod 740 / etc / ssl / private /ssl-cert-snakeoil.key#これでpostgresqlが始まります! (そしてinstallコマンドはもう失敗しません)sudo service postgresql restart 

私は同じような問題に数回遭遇しました。通常、私はこのチュートリアルに従ってPostgreSQLの新規インストールを行うだけで、データを失うことを犠牲にして問題を解決します。

私は今日、本当の修正を得ることに決めました。 PostgreSQLを再起動すると、ubuntuで解決されました。sudo /etc/init.d/postgresql restart