psql: error: could not connect to server: FATAL: role "root" does not exist
↓の記事ではDockerでPostgresql環境の構築は
超簡単と書いてますが
実際にはこんなにすんなりいかず
僕はめちゃくちゃ苦しみました。笑

【超簡単】DockerでPostgle環境を構築
postgresql 環境をDockerで構築するこの記事を見ればDockerでPostgle環境を構築は超簡単にできます。なぜなら僕はこの作業で死ぬ程ハマったからです。笑その経験をもとにソッコーで構築する方法を紹介します。実装内容...
前半の流れは↑の記事をみてね。
苦しんだエラーがコチラ。
psql: error: could not connect to server: FATAL: role "root" does not exist
DockerとPostgresqlを接続するために
こちらのコマンドを打つと
$ psql -h localhost -p 5432 -U root -W
Password:
このエラーが発生。
psql: error: could not connect to server: FATAL: role "root" does not exist
存在していない?
今動いているコンテナを確認。
確認のためのコマンドはコチラ↓
$ docker ps
結果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29eba48aa194 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp online_fitness_booking_api_database_1
8bb361762e0e mysql:latest "docker-entrypoint.s…" 9 days ago Up 9 days 0.0.0.0:3306->3306/tcp, 33060/tcp hello_rails_database_1
postgresのサーバーはあるんですけど、
試行錯誤している時に色々いじったので、
一旦ストップと削除してみる。
コマンドはこちら
ストップ
$docker stop コンテナID
削除
$ docker rm コンテナID
実行。
$docker stop 29eba48aa194
$ docker rm 29eba48aa194
削除できているか確認。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8bb361762e0e mysql:latest "docker-entrypoint.s…" 9 days ago Up 9 days 0.0.0.0:3306->3306/tcp, 33060/tcp hello_rails_database_1
削除できてますね。
$ docker-compose build
再度立ち上げ。
$ docker-compose up -d
そして再挑戦!
$ psql -h localhost -p 5432 -U root -W
Password:
psql: error: could not connect to server: FATAL: role "root" does not exist
再びエラー。
今接続されているものを確認します。
$ lsof -n -i:5432 | grep LISTEN
postgres 1427 user 5u IPv6 0xa92604dcdeb822b9 0t0 TCP [::1]:postgresql (LISTEN)
postgres 1427 user 6u IPv4 0xa92604dce5c9c7e9 0t0 TCP 127.0.0.1:postgresql (LISTEN)
com.docke 1480 user 51u IPv6 0xa92604dcecb44679 0t0 TCP *:postgresql (LISTEN)
なんか色々出てきた。。。
今回 Docker で立ち上げているので、
com.docke 1480 user 51u IPv6 0xa92604dcecb44679 0t0 TCP *:postgresql (LISTEN)
これだけ表示されるのが正しい。
他の2つ(実際には1つ)は
以前アプリ作成をした時のサーバーの残り?
と考え、消してみる。
消す時に使うコマンドは"kill"
$ kill 1427
再度、今接続されているものを確認。
$ lsof -n -i:5432 | grep LISTEN
com.docke 1480 user 51u IPv6 0xa92604dcecb44679 0t0 TCP *:postgresql (LISTEN)
postgres 14476 user 5u IPv6 0xa92604dcecb47779 0t0 TCP [::1]:postgresql (LISTEN)
postgres 14476 user 6u IPv4 0xa92604dcef8a7589 0t0 TCP 127.0.0.1:postgresql (LISTEN)
番号は変わっているが
多分同じサーバーが再起動している?
もう一度消してみる。
kill 14476
確認。
$ lsof -n -i:5432 | grep LISTEN
com.docke 1480 user 51u IPv6 0xa92604dcecb44679 0t0 TCP *:postgresql (LISTEN)
postgres 14947 user 5u IPv6 0xa92604dcecb46519 0t0 TCP [::1]:postgresql (LISTEN)
postgres 14947 user 6u IPv4 0xa92604dcedeef589 0t0 TCP 127.0.0.1:postgresql (LISTEN)
何度やっても消えない。
これが噂のゾンビサーバー?
参考文献をもとにコマンドを実行。
$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
こちらのコマンドの説明はこちら
確認。
$ lsof -n -i:5432 | grep LISTEN
com.docke 1480 user 51u IPv6 0xa92604dcecb44679 0t0 TCP *:postgresql (LISTEN)
今回立ち上げたコンテナだけなので
なんかいけたっぽい。
再再度、接続挑戦!
$ psql -h localhost -p 5432 -U root -W
Password:
psql (12.2, server 12.3 (Debian 12.3-1.pgdg100+1))
Type "help" for help.
root=# exit;
いけたーーーーー!!!!
exit;で終了。
戦闘時間は約6時間。
めちゃつかれた。笑
まとめ
今回のアプリ作成と関係ない部分でのエラーでした。
同じことが起きないように使わないサーバーは
落としておこうと思います。。笑
コメント