postgresql을 docker에서 실행한 후, pgAdmin에 연결을 하려 하는데 에러가 났습니다.
사실 아래처럼 글자가 깨져서, password가 틀려서 5432 port, localhost로 접속을 못하는구나만 추측했습니다.
```
Unable to connect to server:
connection failed: connection to server at "127.0.0.1", port 5432 failed: ġ��������: ����� "postgres"�� password ������ �����߽��ϴ�
```
=>
아래로 유추
```
Unable to connect to server:
connection failed: connection to server at "127.0.0.1", port 5432 failed: ġ: "postgres" password ߽ϴ
```
=> 비밀번호 인증(Password Authentication) 단계에서 거부됨
------
어쩌다가 이 에러를 얻었냐면..

pgAdmin에서 database 등록하다가 이 에러를 얻었다.
하도 안되서 pgAdmin의 문제인가 싶어서 업데이트도 하고, DBeaver에서도 실행했는데 같은 오류를 얻었다.

pgAdmin의 Connection 설정 목록
- Host name/address: 127.0.0.1 (또는 localhost)
- Port: (5432->)5433 (방금 설정한 외부 노출 포트)
- Maintenance database: postgres
- Username: postgres
- Password: postgres
그 와중에, pgvector-volumn을 생성해놓고 pgdata를 없애는 명령어를 입력함.(=> 이름 확인!!)
( => # 스크립트에서 사용 중인 정확한 볼륨 이름 삭제 (이게 핵심!)
docker volume rm pgvector-volume)
🔍 시도해 본 방법들
1) Docker 컨테이너 및 볼륨 초기화 기존 데이터베이스 설정이나 비밀번호가 남아있을까봐 컨테이너를 지우고 볼륨까지 완전히 삭제한 뒤 다시 생성해 봤습니다. (코드로도하고, docker desktop에서 직접 삭제도 함)
- docker rm -f pgvector
- docker volume rm pgvector-volume (volumn 이름 맞추기)
```
# pgvector1.ps1 실행 => powershell에서 ./pgvector1.ps1
# 1. 기존 컨테이너 및 볼륨 완전 삭제 (초기화)
## 실행 중인 컨테이너 중지
docker stop pgvector
## 컨테이너 제거
docker rm pgvector
## 기존 볼륨 제거
docker volume rm pgvector-volume
# 2. ## 컨테이너 생성 5433 포트로 새로 실행
docker run `
--name pgvector `
-d `
-p 5433:5432 `
-e POSTGRES_USER=postgres `
-e POSTGRES_PASSWORD=postgres `
-e TZ=Asia/Seoul `
-v pgvector-volume:/var/lib/postgresql/data `
pgvector/pgvector:pg17 `
-c max_connections=500
```
2) Docker 포트 포워딩 변경 (5432 → 5433) 기본 포트인 5432가 혹시 문제를 일으키나 싶어 외부 노출 포트를 5433으로 변경하여 컨테이너를 띄워봤습니다.
- -p 5433:5432 설정 적용
3) pgAdmin 접속 정보 수정 포트를 바꿨으니 pgAdmin의 Connection 설정에서도 Port를 5433으로 변경하며 접속을 시도했습니다.
✅ <해결> 4) 백그라운드 로컬 서비스 중지 및 포트 정리
결정적인 원인: 알고 보니 내 컴퓨터 백그라운드에 로컬 설치판 PostgreSQL 16과 17 버전이 이미 각각의 포트(5432 등)에서 실행되고 있었습니다.
Docker에서 5432를 열려고 해도, 이미 내 PC의 운영체제가 직접 실행 중인 PostgreSQL 서비스가 포트의 우선권을 꽉 잡고 있었던 것이죠. 이 때문에 pgAdmin은 Docker 컨테이너가 아닌 로컬의 PostgreSQL 서버에 접속하려다 비밀번호 오류를 냈던 것입니다.
해결 방법:
- Windows 서비스(services.msc) 창을 엽니다.
- 실행 중인 postgresql-x64-16(port 5432), postgresql-x64-17(port 5433) 서비스를 찾아 [중지] 시킵니다.
- Docker 컨테이너를 다시 실행하니 드디어 정상적으로 연결 성공!
💬 마치며
아.. 진짜 힘들었다... 😅 Docker 설정(컨테이너, 이미지, 볼륨)과 비밀번호 공백 추가(shell script 공백때문에..), port 번호만 계속 만졌는데, 범인은 등 잔 밑(내 로컬 서비스)에 있었네요. 혹시 저처럼 pgvector나 postgres를 Docker로 띄우는데 접속 오류가 난다면 꼭 로컬에 설치된 DB 서비스가 돌고 있지는 않은지 먼저 확인해 보세요!
'개발 관련 > ERROR' 카테고리의 다른 글
| [WARN][TaskAgile] npm does not support Node.js v12.18.3 (0) | 2020.12.16 |
|---|---|
| [ERROR][TaskAgile] Validation Error: @vue/cli-plugin-unit-jest ; (0) | 2020.12.16 |
| [ERROR][TaskAgile] Cannot find module 'node-sass' (0) | 2020.12.16 |
| [ERROR][TaskAgile] Could not locate module @/utils/error-parser mapped as: (0) | 2020.12.07 |
| [ERROR][TaskAgile] .NoUniqueBeanDefinitionException, import한 패키지와 같은 이름일 때 (0) | 2020.11.30 |