[BE] Docker에 MySQL 띄워서 사용하기

홍종훈·2023년 8월 15일
0

BE

목록 보기
6/9
post-thumbnail

SQL을 공부하기 위해 이전에 설치했던 MySQL을 실행하려고 하니 자꾸 비밀번호가 틀렸다는 오류가 났다.

비밀번호를 바꾼적이 없는데 종종 이런 오류가 발생한다. 안전모드로 접속해서 비밀번호를 재설정하려고 시도해보기도 했지만, MySQL 프로세스가 정상적으로 종료되지 않아 비밀번호 재설정도 되지 않았다. 삭제했다가 설치해보기도 여러번 하다가 결국엔 Docker에 MySQL을 띄워 사용할 수 있다는 것을 알게되어 직접 해보기로 했다.

Docker에 MySQL이미지를 띄워서 사용할때의 장점은 다음과 같다.

  1. 환경 분리: Docker는 애플리케이션과 그에 필요한 모든 의존성을 컨테이너 안에 패키징하므로, 로컬 환경에서 다른 프로젝트나 다른 버전의 MySQL이 필요할 때 서로 간섭하지 않고 독립적으로 실행할 수 있다.

  2. 설치 간편성: Docker Hub에 있는 MySQL 공식 이미지를 사용하면, 몇 줄의 명령어로 MySQL을 설치하고 실행할 수 있다. 이렇게 함으로써 복잡한 설치 과정이나 설정 과정을 피할 수 있다.

  3. 이식성: Docker 컨테이너는 환경에 구애받지 않아 어디서든 동일하게 실행된다. 이는 로컬에서의 개발과 테스트 과정이 프로덕션 환경과 최대한 유사하게 이루어질 수 있도록 도와준다.

  4. 버전 관리: 필요에 따라 특정 버전의 MySQL을 빠르게 실행할 수 있다. 또한, Docker 이미지를 사용하면 여러 버전의 MySQL을 동시에 관리하고 전환하는 것이 용이하다.

  5. 초기화 및 제거 용이성: Docker 컨테이너는 일시적인 실행 환경을 제공한다. 실험적인 작업이나 테스트를 위해 MySQL 인스턴스를 띄운 후, 작업이 끝나면 컨테이너를 손쉽게 제거할 수 있다. 이렇게 함으로써 시스템의 낭비를 줄이고 깨끗한 상태를 유지할 수 있다.

  6. 자원 격리: Docker는 호스트 시스템의 자원을 컨테이너별로 격리하여 할당할 수 있다. 이로 인해 MySQL에 할당된 자원을 효과적으로 관리할 수 있다.

  7. 복제 및 배포 용이성: Docker Compose와 같은 도구를 사용하면, MySQL을 포함한 여러 서비스의 구성을 손쉽게 복제하고 배포할 수 있다.

Docker에 MySQL이미지 띄우기

1. 도커가 잘 설치되어 있는지 확인한다.

% docker -v 

2. MySQL Docker 이미지 다운로드

% docker pull mysql

특정한 버전을 다운로드 하려면 아래와 같이 입력한다.

% docker pull mysql:8.0.22

3. 다운로드된 이미지를 확인한다.

% docker images

4. MySQL Docker 생성 및 실행

아래의 명령어를 입력해서 MySQL Docker를 생성하고 실행한다.

'password' 부분에 root 비밀번호를 설정한 뒤,

-p 3306:3306 옵션을 추가해 3306 포트에 맵핑한다.

% docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d -p 3306:3306 mysql:latest

5. MySQL Dokcer 접속

4번에서 설정한 비밀번호를 입력해서 MySQL에 접속한다.

% docker exec -it mysql-container mysql -uroot -p

성공적으로 접속된 것을 확인했다.

6. DBeaver 연결

MySQL gui를 사용하기 위해 DBeaver과도 연결을 시도해봤다.

연결하려고 하니 Public Key Retrieval is not allowed 라는 오류가 발생했다.

해당 오류는 MySQL JDBC 드라이버에서 서버의 RSA 공개 키를 검색하려고 할 때 발생하는데, 이는 기본적으로 비활성화되어 있기 때문이다.

Connect to a database 의 상단에 있는 'Driver properties'를 선택하고 useSSL옵션을 찾아 false로, allow PublicKeyRetrieval을 true로 변경해준다.


Docker로 띄운 MySQL DB가 잘 불러와진 것을 확인할 수 있었다.

profile
Search Engineer

0개의 댓글