Docker

[Docker] Docker PostgreSQL ์—ฐ๊ฒฐ ๋ฌธ์ œ : localhost ๋ฐ”์ธ๋”ฉ ์šฐ์„ ์ˆœ์œ„์™€ 'role postgres does not exist' ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

9taetae9 2025. 4. 7. 19:29
728x90

Docker ๊ธฐ๋ฐ˜ PostgreSQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ DataGrip์—์„œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ ์‹œ "[28000] FATAL: role 'postgres' does not exist" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ–ˆ๋‹ค.

PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•˜๋˜, ๋ฐ์ดํ„ฐ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๋ณผ๋ฅจ์— ์ €์žฅํ•˜๊ณ , ํ˜ธ์ŠคํŠธ์˜ 5432 ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด 5432 ํฌํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ๋‹ค.

 ์ƒํƒœ๋„ ์ •์ƒ์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ Datagrip์—์„œ Test Connection์„ ์‹œ๋„ํ•ด ๋ณด์•˜๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด [28000] FATAL: role 'postgres' does not exist ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์šฐ์„  ๋ฌธ์ œ์˜ ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ–ˆ๋‹ค.

์ฒ˜์Œ์— ํฌํŠธ ์ถฉ๋Œ๋ฌธ์ œ๋ฅผ ์˜์‹ฌํ–ˆ์ง€๋งŒ ์œ„ ๋กœ๊ทธ ์ƒ์œผ๋กœ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์–ด ๋ณด์—ฌ ๋„˜์–ด๊ฐ”๋‹ค.

[28000] FATAL: role 'postgres' does not exist ์˜ค๋ฅ˜๋Š” PostgreSQL์— 'postgres' ์‚ฌ์šฉ์ž๋กœ ์ ‘์†ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

๋‹ค์‹œ ์ฒ˜์Œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ–ˆ๋˜ ๋ช…๋ น์–ด๋ฅผ ์‚ดํŽด๋ณด์•˜๊ณ , ๋ถ„๋ช… ์Šˆํผ ์œ ์ €๋ฅผ postgres๋กœ ์„ค์ •ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ๊ฒช์€ ์‚ฌ๋žŒ๋“ค์˜ ๊ธ€์„ ์ฐพ์•„ ๋ณด๋ฉฐ username์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด ๋ณด๋Š” ์˜ต์…˜์„ ํฌํ•จํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ ์—ฌ๋Ÿฌ ์‹œ๋„๋ฅผ ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค.

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1: ํฌํŠธ ๋งคํ•‘ ๋ณ€๊ฒฝ

ํฌํŠธ ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด์„œ 5433:5432๋กœ ํฌํŠธ๋ฅผ ๋งคํ•‘ํ•ด๋ณด์•˜๋”๋‹ˆ ํ—ˆ๋ฌดํ•˜์ง€๋งŒ ์ •์ƒ ์—ฐ๊ฒฐ์ด ๋˜์—ˆ๋‹ค.

 

ํฌํŠธ ๋งคํ•‘ ๋ณ€๊ฒฝํ›„ ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ•œ ๋’ค์—์„œ์•ผ ํ˜„์žฌ 5432 ํฌํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•ด ๋ณด์•˜๋‹ค.

 

  • ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์ค„: ๋™์ผํ•œ PostgreSQL ํ”„๋กœ์„ธ์Šค(PID 1701)๊ฐ€ IPv6์™€ IPv4 ๊ฐ๊ฐ์—์„œ localhost(5432 ํฌํŠธ)์—์„œ LISTEN ์ƒํƒœ์ด๋‹ค.
  • ์„ธ ๋ฒˆ์งธ ์ค„: Docker ๊ด€๋ จ ํ”„๋กœ์„ธ์Šค(com.docke, PID 82303)๊ฐ€ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค(*)์—์„œ LISTEN ์ƒํƒœ์ด๋‹ค. 

์•„๋ž˜๊ธ€๋ถ€ํ„ฐ"Homebrew PostgreSQL"๊ณผ "ํ˜ธ์ŠคํŠธ PostgreSQL"๋กœ ๋‹จ์–ด๋ฅผ ํ˜ผ์šฉํ•ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์นญํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค.


์˜๋ฌธ: localhost์™€ ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค(*)์—์„œ ๋™์ผ ํฌํŠธ๊ฐ€ ์—ด๋ ค ์žˆ์–ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

์ปค๋„์˜ ๋ฐ”์ธ๋”ฉ์—์„œ๋Š” ํŠน์ • IP์— ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋œ ์†Œ์ผ“์€ 0.0.0.0(*) ๋ฐ”์ธ๋”ฉ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฒฝ์šฐ  lostcalhost:postgresql(127.0.0.1:5432)๋กœ์˜ ์—ฐ๊ฒฐ ์‹œ๋„๋Š” ํ•ญ์ƒ IP๊ฐ€ localhost ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋œ Homebrew PostgreSQL๋กœ ๋ผ์šฐํŒ… ๋œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ํ๋ฆ„์œผ๋กœ ํ•ด๋‹น ์ƒํ™ฉ์„ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

 

๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„

1. ํด๋ผ์ด์–ธํŠธ -> localhost:5432

2. ์ปค๋„ ๋ฃจํ”„๋ฐฑ ๋“œ๋ผ์ด๋ฒ„ -> Homebrew PostgreSQL

* Docker ์ปจํ…Œ์ด๋„ˆ๋Š” *:5432์—์„œ ๋Œ€๊ธฐ ์ค‘์ด์ง€๋งŒ localhost ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์—†์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด Datagrip์—์„œ localhost๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ip๋กœ ์ ‘์†์„ ์‹œ๋„ํ•˜๋ฉด Docker ์ปจํ…Œ์ด๋„ˆ Postgresql๋กœ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•ด์งˆ๊นŒ ๊ถ๊ธˆํ•ด์ ธ ์‹œ๋„ํ•ด ๋ณด์•˜๋‹ค.

en0 ์ธํ„ฐํŽ˜์ด์Šค์— ํ• ๋‹น๋œ ๋กœ์ปฌ IP ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด ๋ณด์ž.

Host๋ฅผ ๋กœ์ปฌ IP ์ฃผ์†Œ๋กœ ํ•œ ๋’ค user๋Š” postgres๋กœ ์„ค์ •ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•˜๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด Docker ์ปจํ…Œ์ด๋„ˆ PostgreSQL์— ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

์œ„ ๋‘ ์ƒํ™ฉ์„ ๋‹ค์‹œ ์ •๋ฆฌํ•ด ๋ณด์ž.

localhost:5432๋กœ ์ ‘์† ์‹œ

1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ → localhost:5432

2. ์ปค๋„์˜ ๋ฐ”์ธ๋”ฉ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ localhost์— ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ๋ผ์šฐํŒ…

3. Homebrew PostgreSQL์ด ์š”์ฒญ ์ฒ˜๋ฆฌ (Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฌด์‹œ๋จ)

๋กœ์ปฌ ๋„คํŠธ์›Œํฌ IP:5432๋กœ ์ ‘์† ์‹œ

1. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ → 192.168.x.x:5432 (๋กœ์ปฌ IP)

2. ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด *(๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค)์— ๋ฐ”์ธ๋”ฉ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ๋ผ์šฐํŒ…

3. Docker ์ปจํ…Œ์ด๋„ˆ์˜ PostgreSQL์ด ์š”์ฒญ ์ฒ˜๋ฆฌ

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 2: ํ˜ธ์ŠคํŠธ PostgreSQL ์ค‘์ง€

"[28000] fatal: role 'postgres' does not exist" ์˜ค๋ฅ˜ ์›์ธ์€ ํ˜ธ์ŠคํŠธ์™€ ํ•ด๋‹น Docker ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‘ 5432 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, DataGrip์€ Homebrew PostgreSQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ ค ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Homebrew๋กœ ์„ค์น˜๋œ PostgreSQL์—์„œ ์กด์žฌํ•˜๋Š” ์—ญํ• (role) ๋ชฉ๋ก์„ ํ™•์ธํ•ด ๋ณด์ž.

Role name์— 'postgres'๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค. ๋•Œ๋ฌธ์— "[28000] fatal: role 'postgres' does not exist"๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Homebrew Postgresql์— ์กด์žฌํ•˜๋Š” Role name์œผ๋กœ 5432 ํฌํŠธ์— ๋Œ€ํ•ด test connection์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด ๋ณด์ž.

discodeit_user๋กœ user ๋ช…์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•ด ๋ณด๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด ์—ฐ๊ฒฐ์— ์„ฑ๊ณตํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ด์ œ ๋ฌธ์ œ์˜ ์›์ธ์„ ํŒŒ์•…ํ–ˆ์œผ๋‹ˆ ๋‹ค์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜ธ์ŠคํŠธ PostgreSQL์„ ์ค‘์ง€ํ•œ ๋’ค ์—ฐ๊ฒฐ์„ ํ…Œ์ŠคํŠธํ•ด๋ณด์ž.

ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰ ์ค‘์ธ Homebrew PostgreSQL ์„œ๋น„์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ณ  5432:5432 ํฌํŠธ, user๋Š” postgres๋กœ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ด ๋ดค๊ณ , ์ •์ƒ์ ์œผ๋กœ test connection์— ์„ฑ๊ณตํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ •๋ฆฌ

 

  • ๋„คํŠธ์›Œํฌ ๋ฐ”์ธ๋”ฉ ์šฐ์„ ์ˆœ์œ„
    • ๋™์ผํ•œ ํฌํŠธ์—์„œ ๊ตฌ์ฒด์ ์ธ ๋ฐ”์ธ๋”ฉ(localhost)์ด ์ผ๋ฐ˜์ ์ธ ๋ฐ”์ธ๋”ฉ(*)๋ณด๋‹ค ์šฐ์„ ์‹œ ๋œ๋‹ค.
  • ํฌํŠธ ํ™•์ธ
    • lsof -i :ํฌํŠธ๋ฒˆํ˜ธ๋กœ ๋™์ผ ํฌํŠธ๋ฒˆํ˜ธ์— ํ• ๋‹น๋œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ํŒŒ์•…ํ•˜์ž.
    • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์ œ ์›์ธ๊ณผ ์ง๊ฒฐ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • Docker ์ปจํ…Œ์ด๋„ˆ์™€ ํ˜ธ์ŠคํŠธ ์„œ๋น„์Šค ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ
    • ๊ฐ™์€ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค.

 

 

์ฐธ๊ณ ์ž๋ฃŒ:

https://seosh817.tistory.com/373

 

[Docker] ๋„์ปค ๋„คํŠธ์›Œํฌ ์ดํ•ดํ•˜๊ธฐ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋„์ปค ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋„์ปค ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„์ปค๋ฅผ ํ˜ธ์ŠคํŠธ ์šด์˜์ฒด์ œ์— ์„ค์น˜ํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋“ค์ด ์„ค์น˜๋˜๋ฉฐ IP ์ฃผ์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ

seosh817.tistory.com

https://onthegoalways.com/blog/port-sharing-os-and-docker/

 

https://www.baeldung.com/linux/socket-options-differencep

 

 

https://docs.docker.com/engine/network/packet-filtering-firewalls/

 

Packet filtering and firewalls

How Docker works with packet filtering, iptables, and firewalls

docs.docker.com

https://serverfault.com/questions/1084915/still-confused-why-docker-works-when-you-make-a-process-listen-to-0-0-0-0-but-no

 

Still confused why docker works when you make a process listen to 0.0.0.0 but not 127.0.0.1

const hostname = '0.0.0.0'; // << This is where I'm confused const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 't...

serverfault.com

 

 

728x90