본문 바로가기
개발자의삶/docker

Mysql docker 사용하기 (실수로 컨테이너 지웠을때..)

by 트라네스 2023. 2. 20.
728x90
반응형

 이번에 로컬에 구성해 둔 mysql docker를 사용하다가 conf 값을 잘못 만지는 바람에 기동이 안되어서 당황해서 컨테이너를 삭제해버리고 말았다. 다행히도 mysql data directory 가 외부에 구성되어 있었고 ~/datadir에 컨테이너의 data directory 가 구성되어 있는 것을 확인할 수 있었다.

 

Mysql을 Docker로 사용할 때 트러블 슈팅

 일단 이번 포스팅에서 다룰 주제는 아래의 2가지이다. 도커로 mysql을 사용할 때 중요한 점으로 

  1. 도커 컨테이너를 실수로 지웠을 때 datadir 을 알고 있을 때
  2. 도커 컨테이너로 mysql 을 띄웠으나 외부 접속이 안될 때

 사실 데이터를 유지할 필요가 없다면 그냥 새롭게 컨테이너를 생성하여 사용해도 되지만 나와 같은 도커에 대한 경험치가 낮은 사람들을 위해 몇 자 기록을 남긴다. 

 

 우선적으로 일단 datadir 가 있다는 케이스를 전제하에 작성한다. 없다면 아래의 도커 생성 이후 외부 접속 가능한 내용만 참고하면 된다.

 

 

도커 컨테이너를 실수로 지웠으나 datadir을 외부로 잘 잡아두었을 때

 이건 정말 다행이다. 하지만 외부 datadir 을datadir을 알고 있다고 하더라도 datadir을 도커로 실행된 mysql 컨테이너의 datadir로 마운트를 시키는 방법을 모르면 정말 하루종일 검색만 할 수도 있다. 아래 명령어를 참고하도록 한다.

#docker run -d -p 3306:3306 --name ${container name} -v {local datadir}:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=${사용할 패스워드} --restart="always" mysql:{version}
docker run -d -p 3306:3306 --name mysql-local -v /blah/blah:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password --restart="always" mysql:5.6.31

 잠시 뒤에 도커가 올라온 것을 확인한다. $docker ps --filter name=mysql 을 수행하면 아래와 같은 그림을 확인할 수 있다.

mysql 로 실행된 도커

 자 그럼 외부 접속을 통하여 사용하고 있던 database 를 알아보자.

#docker exec -it ${containerId} /bin/sh
docker exec -it c3fc1ea1bd1d /bin/sh

#root 로 실행되지 않는 경우
su -

mysql 로만 실행 시 access denied 가 발생하는 경우에는 뭔가 모자라다는 이야기이기 때문에 추가로 입력을 해줄 필요가 있다.

mysql access denied command
mysql access denied command

mysql -u root -p

mysql 접속 확인
mysql 접속 확인- kkul

 자 이제 마지막으로 외부 접속 권한을 허용해주는 명령어를 날려보도록 하자.

# 적절하게 id/password 값을 변경하여 권한을 준다.
GRANT ALL privileges ON *.* TO root@'%' IDENTIFIED BY 'password';
FLUSH privileges;

 이제 사용하고 있는 sql 개발 툴을 이용하여 접속해 보도록 하자. 혹시 틀린 것이 있거나 문의가 있으면 댓글로 부탁드립니다. 읽어주셔서 감사합니다.

728x90
반응형

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로