web-dev-qa-db-ja.com

「/var/run/postgresql/.s.PGSQL.5432」に関するエラーが発生した場合、どのようにPostgresにアクセスしますか?

Ubuntu 16を実行しています。Postgresqlをインストールしました。以前はPostgresqlが機能していましたが、その後再起動しました。

nmapコマンドは、ポート5432が開いていることを示します。 Postgresは正しく動作しているようです:

service postgresql status

postgresql.service-PostgreSQL RDBMSロード済み:ロード済み(/lib/systemd/system/postgresql.service;有効化;ベンダープリセット:有効化)アクティブ:2017年7月29日18:42:59 EDT以降アクティブ(終了) 1分4秒前プロセス:201 ExecStart =/bin/true(code = exited、status = 0/SUCCESS)メインPID:201(code = exited、status = 0/SUCCESS)
メモリ:0B CGroup:/system.slice/postgresql.service

私はこれを実行しました:psql

しかし、私はこれを得ました:

psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行され、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?

上記のファイルは存在しないようです。

どのようにしてPostgresqlに入りますか?通常、psqlまたはSudo -i -u postgresを実行してからpsqlを実行します。しかし、これらのコマンドは機能していません。 「サーバーに接続できませんでした」というエラーが表示され続けます。いくつかの再起動は助けにはなりませんでした。

更新:

次のコマンドを実行しました:dpkg -l | grep postgres

 rc postgresql-9.5 9.5.6-0ubuntu0.16.04 AMD64オブジェクトリレーショナルSQLデータベース、バージョン9.5サーバー
 ii postgresql-client 9.5 + 173 PostgreSQLのすべてのフロントエンドプログラム(サポートされているバージョン)
 ii postgresql-client-9.5 9.5.7-0ubuntu0.16.04 PostgreSQL 9.5用のAMD64フロントエンドプログラム
 ii postgresql-client-common 173複数のPostgreSQLクライアントバージョン用のすべてのマネージャー
 ii postgresql-common 173すべてのPostgreSQLデータベースクラスターマネージャー
9
Victor

psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行され、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?

このエラーは通常、サーバーが実行されていないことを意味します。 dpkg -l出力とコメントのスレッドに基づくと、これはpostgresql-9.5メインパッケージが何らかの理由でアンインストールされたことが原因でした。 dpkg--purgeオプションを指定してアンインストールが呼び出されていないため、データファイルと構成ファイルがまだ残っているため、apt-get install postgresql-9.5で問題を解決できます。

5
Daniel Vérité

おそらく複数のPostgreSQLバージョンがインストールされています。その場合、他のバージョンはおそらくデフォルトでunix_socket_directories = '/tmp/'になりますが、libpq your psqlはおそらくデフォルトで/var/run/postgresql/にリンクされます。

やってみる

psql -h /tmp

それが機能する場合、上記が問題です。 export PGHOST=/tmp.bashrcに追加して、ユーザーのデフォルトをローカルで変更できます。

しないが機能する場合は、PostgreSQLが実際に実行されていることを確認してください

ps aux |grep postgres

そうでない場合は、それを開始します。インストール方法によって異なりますが、パッケージを使用してインストールした場合は、serviceまたはsystemctlコマンドを使用します。

9
Craig Ringer

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

ほとんどの場合、ステータスはダウンしています。 Postgresクラスタとサービスを再起動してみてください

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

#format is pg_ctlcluster <version> <cluster> <action>
Sudo pg_ctlcluster 9.6 main start

#restart postgres
Sudo service postgres restart

手順3:手順2が失敗してエラーがスローされた

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

FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `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

# Fixed ownership and mode
Sudo chown root:ssl-cert  /etc/ssl/private/ssl-cert-snakeoil.key
Sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key

Sudo service postgres restart
5
Noushad

あなたはUbuntuの下にいます。 Debianラッパーを使用できます。 pg_ctlcluster 9.6 main startを試してください(クラスターの名前をmainに変更できます。

別のPostgreSQLバージョンが実行されているかどうかを確認するには、ps -ef | grep postgresを試してください。

Pg_ctlclusterで始まらない場合。ログを見てください。 Debianベースの場合、デフォルトのロギングは/var/log/postgresqlにあります。

1
Arkhena

私はいくつかのチェックでこの問題を解決しました

root@biber-OptiPlex-380:/home/biber/kailas/RoR/demo# su - postgres
postgres@biber-OptiPlex-380:~$ psql
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"?
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): down
postgres@biber-OptiPlex-380:~$ service postgresql start
 * Starting PostgreSQL 9.5 database server                                                                                                        [ OK ] 
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): online
postgres@biber-OptiPlex-380:~$ psql
psql (9.5.19)
Type "help" for help.

postgres=#
0
Kailas Kakade