web-dev-qa-db-ja.com

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

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"?

Sudo netstat -nlp | grep 5432を使用してステータスを表示しましたが、何も表示されませんでした。オンラインで検索したところ、誰かがpg_hba.confを変更するように言ったが、このファイルをlocateできない。また、このコマンドSudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432も試しました。動作しません。

34
hidemyname

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

手順1:データベースが実行されていることを確認する

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

ps -ef | grep postgres

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

501   408     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サーバーを起動するために利用可能なすべてのオプションを確認できます。

man postgres

そこから、オプション-D-rがそれぞれdatadirlogfilenameであることがわかります。

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

findを使用して、/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ファイルが見つかります。

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

# "local" is for Unix domain socket connections only
local       all       all       trust

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

29
Haleemur Ali

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ユーザーグループに属していることを確認する

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

#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

# now postgresql starts! (and install command doesn't fail anymore)
Sudo service postgres restart
10
Noushad

同様の問題に何度か遭遇しました。通常、この tutorial に従ってPostgreSQLの新規インストールを行うだけで、データを失うという犠牲を払って問題を解決します。

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

9
Faith Nassiwa

解決しました!何が起こったのかはわかりませんが、すべてのものを削除して再インストールしました。これは、Sudo apt-get --purge remove postgresql\*およびdpkg -l | grep postgresを削除するために使用したコマンドです。後者は、クリーンでない場合にすべてのパケットを見つけることです。

4
hidemyname

Devuan ascii(Debianかもしれませんか?)でも同じ問題がありました。設定ファイル/etc/postgresql/9.6/main/postgresql.confには、デフォルトでunix_socket_directoriesを指すディレクティブ/var/run/postgresqlが含まれています。これを/tmpに変更すると、ほとんどのクライアントがデフォルトで表示されますが、修正されました。

1
Markus

私は同じ問題に直面していた

Sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
Sudo systemctl start postgresql
Sudo systemctl status postgresql

これは私のために働いた。

1
Aashutosh Rathi

同様の問題があり、問題は設定ファイルpg_hba.confにありました。以前、サーバーを起動しようとしてエラーが発生するような変更をいくつか行っていました。追加の追加をコメントアウトすることで問題は解決しました。

0
Ashwin Vijendra

したがって、Node.jsアプリ(PostgresとSequelizeを使用)で作業している私と仲間にとっては、

  1. brew install postgresql(私たちの1人はpostgresを失い、1人はそうではありませんでしたが、上記と同じエラーメッセージを受け取っていました)

  2. brew services start postgresql ****(Homebrewを使用してpostgresを起動します)

  3. createdb <name of database in config.json file>

  4. node_modules/.bin/sequelize db:migrate

  5. npm start

0
Kala Wetzler

ちょっとだけ追加したい:インスタンスがソケットで苦情を言っている場合、unix_socket_directories/data/postgresql.confに設定されている可能性のある/tmpファイルを確認することもできます。サードパーティのディストリビューションを使用しています。これを/var/run/postgresqlに変更して、サービスを再起動できます。また、/var/runpostgresql dirを作成する必要があります(subsys/postgresql-9.6/var/lockが存在しない場合)(postgresql 9.6で機能します)。

0
Anton Zvonovsky

エラーは、Postgresサーバーが実行されていないことを意味します。開始してみてください:

Sudo systemctl start postgresql

サーバーが起動時に起動することを確認します。

Sudo systemctl enable postgresql
0
sbandra

debianのクイックハウツー:

  1. listen_addressで/etc/postgresql/10/main/postgresql.confを編集*
  2. /etc/postgresql/10/main/pg_hba.confを編集し、最後にHost all all 0/0 md5で行を追加します
  3. ログインロールを作成postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
  4. Sudo /etc/init.d/postgresql restart変更が有効になります

  5. psql --Host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydbを使用してクライアント側からログインする

  6. パスワードは対話的に尋ねられますが、この場合はfooです

thatsは、psqlクライアントからサーバー上のpostgresデータベースにリモートでアクセスする方法

0
qrtLs

例えば、それは何かを引き起こす可能性があります、私の問題は構成ファイルのタイプミスのために引き起こされました。一部の人々は証明書ファイルが原因であると言い、別のグループは一致しない地元の人々が原因であると言います。

問題に関する解決策が見つからない場合は、postgresを削除して再インストールします。これが最良の解決策です。

0
Selçuk Ayhan

Postgresqlの新規インストール中。デフォルトでは、ユーザー名とパスワードは「postgres」として割り当てられます。このRDBMSが提供する機能は、新しいユーザーのロールを追加し、データベースを作成することです。このようなエラーが発生する場合:

  1. デフォルトのユーザー名でログイン:

    root @ kalilinux:〜#須藤-i -u postgres

  2. 対話型プロンプトのype psql

    postgres @ kalilinux:〜$ psql

  3. プロンプトの使用を終了するには

    \ q

  4. 新しいユーザーロールを作成するには

    postgres @ kalilinux:〜$ createuser --interactive

これで、インタラクティブなpsqlシェルになりました。楽しい。ユーザー名からログインし、シェルにpsqlと入力することを忘れないでください。

0
Suman Astani

このエラーメッセージに関する私の問題は、キーとpem証明書に対する誤ったアクセス許可にあり、それらを操作しました。私を大いに助けたのは:/var/log/postgresql/postgresql-9.5-main.logすべてのエラーです。

0
fDebef

ファイルシステムをチェックしてディスクが完全にいっぱいになったため、データベースを起動できなかったため、この問題を解決しました。

unixドメインソケット上の接続"/var/run/postgresql/.s.PGSQL.5432" ?

一連のトラブルシューティングを試してみましたが、ディスクの使用状況を確認し、使用率が100%であることがわかりました。

df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot
0
Hafeez Oguntola

同じ問題がありました。クラスタが存在しない場合、ソケットは存在しないようです。

デフォルトのロケールが設定されていないため、インストール中にデフォルトのクラスター作成が失敗しました。

0
JulienCC