【大苦戦】DockerでPostgle環境を構築

プログラミング
スポンサーリンク

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時間。

めちゃつかれた。笑

まとめ

今回のアプリ作成と関係ない部分でのエラーでした。
同じことが起きないように使わないサーバーは
落としておこうと思います。。笑

参考文献

コメント

タイトルとURLをコピーしました