본문 바로가기

문돌이 존버/각종 꿀팁 및 해결법

apache zeppelin과 윈도우 Postgresql DB 연결 오류 해결

반응형

지난 번엔 WSL2 우분투에서 apache zeppelin이 실행은 되는데, 브라우저에 접속되지 않아 해결 방법을 공유했는데요. 이번에는 제플린과 윈도우 로컬 서버에 설치한 Postgresql을 연결하려는데 아래 오류가 발생하더라구요...

"Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."

딱 봐도 Postgresql에서 WSL 측의 ip 주소를 막은 것 같은데, 지금까지 이해가 되지 않는 것은 둘 다 로컬호스트인데 따로 ip 주소를 써줘야 하냐는 것입니다 ㅠㅠ 다른 사람들은 다 localhost로 퉁치면 되는데, 저 같은 경우에는 WSL ip 주소, 윈도우 로컬 ip 주소 각각 따로 입력해줘야 했습니다.

# WSl ip 주소(우분투 터미널)
ip addr

# 윈도우 로컬 ip 주소(윈도우 터미널)
ipconfig

ip addr을 입력하면 아래처럼 eth0뒤에 줄줄이 정보가 나오고 제가 캡쳐는 하지 않았지만 아래줄에 inet 뒤에 적혀 있는 주소가 WSL ip 주소입니다. 

<WSL 터미널>

ipconfig를 입력하면 IPv4 Address에 적혀 있는 주소가 윈도우 로컬 ip 주소입니다.

<윈도우 터미널>

이렇게 ip 주소를 다 파악한 후 윈도우 로컬 서버에 설치된 Postgresql config 파일 설정을 해줘야 합니다. 처음에 다운로드할 때 디폴트 저장소를 선택했다면 아마도 "C:\Program Files\PostgreSQL\12\binC:\Program Files\PostgreSQL\12\data" pg_hba.conf  파일과 postgresql_conf 파일이 있을 것입니다. 

먼저 pg_hba.conf 파일을 아래와 같이 수정해줍니다. 아마 host all all 0.0.0.0/0 md5 부분이 없을 것인데, 이 부분을 추가해줍니다. 

다음, postgresql_conf 파일을 열고 아래처럼 listen_addresses = "*" 이 되어있는지 확인합니다. 그리고 password_encryption = md5 도 주석처리가 되어있을 텐데, 주석을 풀어줍니다. 

이제 제플린 인터프리터(interpreter)를 설정해줄 차례입니다. 인터프리터를 Postgresql용으로 하나 만들어주시고, 아래 보이는 항목들을 입력해줍니다.

default.url -> jdbc:postgresql://윈도우 로컬 ip 주소/DB이름
default.user -> DB 사용자 이름
default.password -> DB 사용자 비밀번호
artifcat -> org.postgresql:postgresql:9.4.1211

그리고 새로운 노트북을 통해 Postgresql DB에 있는 테이블을 성공적으로 가져올 수 있음을 확인할 수 있습니다. 

(추가) 이렇게 해도 안되다면 윈도우 로컬 방화벽을 살펴볼 필요가 있습니다. 검색창에 방화벽 설정(Windows Defender Firwall)을 입력하면 아래 화면을 보실 수 있을 겁니다. 여기서 오른쪽 Inbound Rules 아래 New Rule을 선택합니다.

이후 아래 화면이 나오면 Port 부분을 선택하고 넘어갑니다.

Postgresql 디폴트 포트 번호인 5432를 입력하고 넘어갑니다. 

아래 연결을 허용하고, Domain, Private, Public 모두 선택해줍니다.

이름만 적으면 마무리가 됩니다. 이름은 자유롭게 정할 수 있습니다. 

728x90
반응형