Programing/Error Resolution(오류해결)

세무민의 코딩일기 : docker에 올린 mariaDB와 dbeaver 연결 중 socket was closed by server 오류 해결하기

세기루민 2022. 3. 22. 01:02
728x90

안녕하세요 세기무민입니다.

오늘 포스팅은 저의 삽질로 알아낸 그런 슬픈 글입니다..

 

세무민의 코딩일기 : docker 설치 및 DB 연결하기(MariaDB)

안녕하세요 세무민입니다. 이번에 다뤄볼 내용은 도커에 대한 내용입니다. 1. Docker? - 컨테이너 기반의 오픈소스 가상화 플랫폼이다. -> 도커는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패

sg-moomin.tistory.com

현재 docker+mariaDB를 연결한 상태이며 도커+마리아DB 연결방법은 위의 링크에서 확인 가능합니다.


"unexpected end of stream, read 0 bytes from 4 (socket was closed by server)

Could not connect to address=(host=localhost)(port=3308)(type=master) : Could not connect to localhost:3308 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server) Could not connect to localhost:3308 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server) Could not connect to localhost:3308 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server) unexpected end of stream, read 0 bytes from 4 (socket was closed by server) unexpected end of stream, read 0 bytes from 4 (socket was closed by server) "

일단 발생한 오류는 위와 같습니다.

일단 위의 오류를 해석해보면 "소켓이 서버에 의해 닫혔다" 라는 의미입니다.

무튼 의미 해석은 크게 중요하지 않고 결국 3308 포트는 연결되지 않는다는 것이겠죠..

위의 그림처럼 오류가 나타났을 때의 상황은 docker에 mariaDB를 3308 포트로 연결한 상태였습니다. 

시도한 방법 및 오류 해결

 

1. 현재 사용중인 포트 확인 후 포트 Kill  - 실패

   1. netstat -ano 을 사용하여 현재 사용중인 포트를 확인해줍니다. 

   2. 3308 혹은 3306에 대한 포트를 사용중이라면 taskkill로 제거 

   3. 다시 docker에 mariaDB를 올린 후 dbeaver 연결 

      -> 위의 방법은 근본적인 원인 해결이 안됨 

 

2.  docker에 올린 mariaDB의 Global PORT 확인 - 해결

진짜 멍청했다..... 이걸 생각하지 않았다는 게 참...

일단 "show global variables like 'PORT' " 쿼리를 이용하여 현재 DB의 글로벌 포트를 확인해준다.

확인했을 때는 3306으로 잡혀있는 것을 확인할 수 있었다. 

이말은 내가 백날 3308 포트로 연결해도 DB 포트가 달라서 위와 같은 오류가 발생하는 것이다. 

따라서 "/etc/mysql/my.cnf" 파일에 PORT를 고정으로 3308으로 추가해주면 문제는 해결된다. 

변경 후 재시작하여 포트를 다시 확인해보면 위의 사진과 같이 포트가 변경된 것을 확인 가능하다.

다시 연결해보면 위와 같이 잘 되는것을 확인할 수 있다. 


이 글이 얼만큼 도움이 될지는 모르겠지만?! 그래도 저와 동일한 문제가 발생하시는 분이 있으시다면 

꼭 도움이 되셨으면 하는 마음에 글을 올려봅니다.

다음에는 더 좋은 포스팅으로 찾아오겠습니다.

728x90