seminar-2022
seminar-2022 copied to clipboard
docker mysql 연결 문제 질문
Docker로 띄운 MySQL을 Datagrip으로 연결하다가 발생한 문제를 해결했는데 왜 됐는지.. 모르겠어서 질문을 올립니다.
우선은 사용하는 운영체제는 윈도우입니다.
Docker로 MySQL을 실행시킨뒤 Docker의 Mysql cli를 사용해서 mysql -u root -p 와 비밀번호를 입력해서 들어가면 잘 들어가지는 상황이었는데 Datagrip을 통해 올바른 user와 password를 쳐도 비밀번호가 틀렸다는 access denied 오류가 계속 발생했습니다.
- 그냥 컴퓨터에도 mysql이 깔려있는 상황이었습니다.
이것저것 해보다가 127.0.0.1 3306번 포트의 PID를 taskkill 했는데 문제가 해결이 되어서.. 이게 왜 된건지 혹시 아시는 분 도움주실 수 있을까요..?
정리하면 아래 두가지가 궁금합니다!
- Docker cli로 접속했을 때는 왜 정상적으로 db에 접속할 수 있었고 datagrip을 사용해 접속하려하면 안됐는지
- 3306포트의 PID를 taskkill 했더니 문제가 왜 해결된건지..?
Docker나 포트같은 개념에 대해 잘알지못해서,, 혹시 답변을 위해 더 필요한 정보가 있다면 추가해보도록 하겠습니다!
docker로 띄운 mysql과 호스트 컴퓨터의 mysql이 둘다 3306 포트를 써서 그렇습니다. 3306포트를 사용하는 프로세스를 kill하면 이미 3306포트를 쓰고 있던 mysql이 꺼져서 docker mysql이 3306포트를 쓸 수 있게 되고, 따라서 datagrip에서 접속이 가능하게 됩니다. docker 컨테이너 안에서 mysql은 정상 작동하니 docker cli상에서 mysql을 사용하실 수 있었지만, host 컴퓨터에서는 이미 호스트 컴퓨터의 mysql이 3306포트를 점유하고 있어, 호스트 컴퓨터에 위치한 datagrip에선 접근이 불가했던 것 같습니다. 호스트 머신의 mysql을 끄고 사용하시거나, 둘다 사용하시려면 docker mysql의 포트를 3307 등으로 바꿔서 사용하시면 될 것 같습니다.
답변 감사합니다!