修正:psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません



問題を排除するために楽器を試してください

PostgreSQLはそれ自体を最先端のオープンソースデータベースアプリケーションプラットフォームとして宣伝しており、DebianLinuxには確かにそれをさらに複雑にするパッケージがたくさんあります。 Ubuntu ServerまたはさまざまなUbuntuスピンのいずれかを使用している場合は、Debianのコアに基づいているため、PostgreSQL用のパッケージのボートロードを見つけることもできます。このレベルの複雑さと開発により、「サーバーに接続できませんでした」および「そのようなファイルまたはディレクトリがありません」という警告がはるかに煩わしくなります。



幸いなことに、これらは通常、PostgreSQLがpostgresという名前のユーザーにこれらのディレクトリを保持させたいという事実によって引き起こされるパーミッションの問題の単純なケースです。簡単なコマンドライントリックを使用することで、これをほぼ瞬時に修正できます。ただし、これが実際に直面している問題であることを確認するために、事前にいくつかの基本的な診断チェックを行うことをお勧めします。



PostgreSQLがサーバーエラーに接続できなかった問題の修正

まず、PostgreSQLシステムを手動で再起動してみてください。場合によっては、これで問題を解決できます。そうでない場合は、少なくともエラーメッセージが表示されます。ほとんどの場合、postgresユーザーとしてpsqlコマンドを発行してシステムを再起動するだけです。



これですべてがクリアされたことがわかるかもしれません。そうしないと、「psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません」という行が表示される場合があります。これは、権限に問題があることを意味します。このエラーメッセージが表示された場合は、他のテキストも吐き出されます。

このメッセージが表示された場合は、サービスステータスをチェックして、モジュールがロードされていることを確認してください。あるべきですが、そうでない場合は再起動することをお勧めします。 「Loaded:loaded(/lib/systemd/system/postgresql.service; enabled)」というメッセージが表示された場合は、実行中です。試してみてください sudoサービスpostgresql再起動 簡単に再起動して、それで問題が解決するかどうかを確認するだけです。通常はそうではありませんが、場合によっては試してみる価値があるかもしれません。




役に立たなかった場合は、PostgreSQLログの内部を調べてエラーを探します。万が一、パッケージエラーについて何かを見つけた場合は、SQLモジュールの1つが欠落している可能性があります。これは通常、これらの問題の原因ではありませんが、少なくとも一見しても害はありません。おそらく、「権限はu = rwx(0700)である必要があります」と警告する何かに実際に遭遇するでしょう。

その「データディレクトリ「/var/lib/postgresql/9.6/main」にはグループまたはワールドアクセスがあります」。ただし、実行しているSQLサーバーによってバージョン番号が異なる場合があります。

これは、Debianおよび同様のディストリビューションが、セキュリティのために、postgresユーザーおよびグループがこれらのディレクトリを0700のアクセス許可で制御し、すべてのファイルを0600のアクセス許可で制御することを想定しているためです。ターミナルで次のコマンドを実行して、アクセス許可を修正するだけです。

sudo chown -R postgres:postgres /var/lib/postgresql/9.6/ && sudo chmod -R u = rwX、go = /var/lib/postgresql/9.6/

これらのファイル権限オプションを設定する特定の方法のために、おそらくよく知っている一般的な小文字のXではなく、大文字のXである必要があることに注意してください。これを行うにはrootアクセスが必要ですが、これら2つのsudoマークを含めるだけで、通常のユーザーとして実行するときに適切な権限を自分に与えることができます。 UbuntuとUbuntuからスピンオフされたさまざまなLinux実装がメインのrootアカウントをハッシュするため、これは重要です。そのため、この方法で処理を行う必要があります。

このコマンドが終了したら、次の方法でサービスを再開できます。 sudoサービスpostgresql再起動 ターミナルから送信され、今回はエラーが発生しないはずです。ログを確認すると、権限の問題に関する警告も表示されなくなります。

これはかなり特定の条件の結果として発生するエラーであるため、PostgreSQLディレクトリの権限操作に関連する操作を手動で実行しようとしない限り、最初に修正した後で再度発生することはありません。そもそもこの問題を修正する以外に、これが本当に必要な状況はありません。

読んだ3分