LoginSignup
0
0

DBクライアントツールが接続できなくなった

Posted at

発生事象

普段、DBクライアントツールにTablePlusを使用しています。
いつも通りDockerで立ち上げているローカルのDBに接続しようとしたところ、
次のようなエラーが出て接続できなくなりました。

connection to server at "localhost" (127.0.0.1), port 5432 failed: FATAL: role "postgres" does not exist

前日まで普通に使えてましたし、connectionの情報は保存していますので、
入力値を間違えたという可能性はありません。

Dockerも特にいじってません。

試してみたこと

roleの確認

role "postgres" does not existとあるので、
DBコンテナにアタッチしてPostgreSQLにログインし、roleが存在しているかどうかを確認しました。

結果、存在していました。

再起動

「再起動は全てを解決する」という名言があります(嘘)
ということで、とりあえず再起動してみました。

しかし状況変わらず。

DBクライアントツールのアンインストール

一度アンインストールし、再度インストールしてみました。
これでも解決せずでした。

原因

上記のように色々試しつつ、直近で何か変わったことしたかなーと考えていたところ、
ローカルでPostgreSQLを使用したい機会があったため、
homebrewでPostgreSQLをインストールし使っていたことを思い出しました。

これが何か悪さしていそうだと思い、さらに調査。

すると、ローカルで動作しているPostgreSQLがポート5432を占有していたために
TablePlusからDockerコンテナ内のPostgreSQLへの接続が競合していることがわかりました。

解決方法

ポート5432が他のプロセスによって占有されていないかを確認

以下のコマンドでプロセスの確認。

lsof -i :5432

実行結果

COMMAND     PID       USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
postgres   2116 XXXX    7u  IPv6 0x91d6bd0f8d32a8ab      0t0  TCP localhost:postgresql (LISTEN)
postgres   2116 XXXX    8u  IPv4 0x91d6bd012679c10b      0t0  TCP localhost:postgresql (LISTEN)
ssh        8131 XXXX   26u  IPv4 0x91d6bd01267988a3      0t0  TCP *:postgresql (LISTEN)
TablePlus 11229 XXXX   22u  IPv4 0x91d6bd01268ddb83      0t0  TCP localhost:62633->localhost:postgresql (CLOSE_WAIT)

ローカルのPostgreSQLサービスが起動しており、このサービスがポートを占有しています。

ローカルのPostgreSQLを停止

以下のコマンドでPostgreSQLを停止します。

brew services stop postgresql@15

(自分の場合は15系を使用していたので@15をつけました)

ポートが解放されたことを確認した後、
TablePlusで再度接続を試みると成功しました。

最後に

エラーメッセージが分かりづらいのもあり(言い訳)、無駄に時間を溶かしてしまいました。

一度冷静になってこれまでと違ったことをしていないか振り返ることが大切ですねー。。

0
0
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
0