0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker, PostgreSQL - "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory

Last updated at Posted at 2024-05-07

1. 状況

-h を指定しないと NG

$ psql my-postgres my-postgres -p 5432
psql: error: connection to server on socket
      "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?
$ 

2. 対策

-h を指定すると OK

$ psql my-postgres my-postgres -p 5432 -h localhost
Password for user my-postgres: 
...
$

3. 理由

ChatGPT 先生曰く...

  1. -h を指定した場合
    • ネットワークを使用して、リモートのサーバに接続を試みます
  2. -h を省略した場合

UNIXドメインソケットは、同じマシン上のプロセス間通信に使用されます。この場合、psql/var/run/postgresql/.s.PGSQL.5432というパスのソケットファイルを探します。

しかし、Dockerを使用してPostgreSQLサーバーを実行している場合、サーバーは別のコンテナ内にあり、UNIXドメインソケットは使用できません。そのため、-hオプションを使用してホスト名またはIPアドレス(この場合はlocalhost)を指定する必要があります。これにより、psqlはTCP/IP接続を使用してサーバーに接続します。

したがって、-hオプションを省略すると、psqlはUNIXドメインソケットを使用して接続を試み、その結果として上記のエラーが発生します。

  • -h localhost を省略しても localhost と通信するんだけど、異なる通信方式を採用してしまうためこの問題が起こるというのがこの問題のポイント
  • エラー文に No such file or directory とあったのでファイルのアクセス権の問題なのかなと思ったら全然違いました... Stackoverflow の記事にも気づけず解決にかなり時間を割いてしまいましたので Qiita にメモを残しました...orz

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?