티스토리 뷰

728x90

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 번호 변경 해야한다.

 

728x90