Docker 에 mysql 설치 후 workbench 연결 오류!?
Docker 에서 mysql 컨테이너 설정 시 기본 포트(3306) 이 아닌 다른 포트로 설정하였다.
테스트를 위해서 workbench 에서 연결 시도를 했는데 오류가 생겼다.
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=1 -d -p 3308:3308 mysql:latest
mysql container 를 3308 포트에 생성하였다.
workbench 에서 포트번호와 사용자와 비밀번호를 입력한 뒤 연결 테스트를 해본다.
(참고로 사용한 workbench 는 DataGrip 이다.)
DBMS: MySQL (버전 없음) 대/소문자 구분: 일반=mixed, 구분자 추가=exact
Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
이런 오류가 발생한다.
docker exec -it mysql-container bash
명령어를 통해서 mysql 접속은 잘되는데 workbench 에서 연결이 안되어서 열심히 구글링하면서 삽질후 해결방법을 찾았다.
docker exec -it mysql-container bash 을 통해서 Mysql 에 접속후 show global variables like 'PORT'; 를 통하여 port 번호를 확인해보면 포트 번호가 3306 으로 되어 있는 것을 확인 할수 있다.
/etc/mysql/my.cnf 에서 port 를 3308 로 변경하면된다.
포트 변경을 더 쉽게 하기 위해서 필자는 아래의 방식을 이용하였다.
변경하는 방법은 docker 에서 container 탭에서 현재 생성한 container 를 선택한다.
Files 를 선택 한뒤 etc 폴더에서 my.cnf 파일에 port = 3308 을 추가해주면 된다.
docker restart mysql-container 로 docker 를 재 시작후 mysql 에 접속하면 port 번호가 변경 된 것을 확인 할수 있다.
마지막 테스트를 위해서 workbench 접속후 연결 테스트를 해보면 성공 한것을 볼수 있다.
docker 에서 컨테이너 생성 시 3306 포트 외에 다른 포트로 설정 시에는 꼭 mysql 에 접속해서 port 번호 변경 해야한다.