1️⃣ MySQL 컨테이너 실행 (볼륨 사용)
cd 원하는경로
# !주의: 아래 디렉토리 경로의 마지막 디렉토리(mysql_data)는 미리 만들지 마세요!
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v 원하는경로/mysql_data:/var/lib/mysql -d mysql
옵션 | 설명 |
-e MYSQL_ROOT_PASSWORD=.. | 루트 계정의 비밀번호 지정 (필수 환경 변수) |
-p 3306:3306 | 호스트 포트와 컨테이너의 포트 연결 |
-v | 볼륨 마운트 (호스트 경로: 컨테이너 경로) |
-d | 백그라운드 모드 실행 |
mysql | 사용할 이미지 (없으면 자동 다운로드됨) |
🔍 주의:
/var/lib/mysql 은 MySQL의 실제 DB 파일 경로이며, 호스트에 연결된 디렉토리를 미리 만들면 안 됩니다.
→ 미리 만들어두면 MySQL 내부 초기 파일들이 덮어씌어져 실행 오류 발생 가능
2️⃣ Windows에서 실행 예시
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v 원하는경로:/var/lib/mysql -d mysql
3️⃣ MySQL 컨테이너 접속
docker exec -it [컨테이너 ID] bash
4️⃣ MySQL 접속
mysql -u root -p
비밀번호 입력: password123
5️⃣ 데이터베이스 생성 및 확인
SHOW DATABASES;
CREATE DATABASE mydb;
SHOW DATABASES;
✅ mydb 라는 DB가 정상적으로 생성된 것을 확인할 수 있음
6️⃣ 컨테이너 종료 및 삭제
docker stop [컨테이너 ID]
docker rm [컨테이너 ID]
7️⃣ 동일 볼륨으로 컨테이너 다시 생성
docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 \
-v 원하는경로:/var/lib/mysql -d mysql
docker exec -it [컨테이너 ID] bash
mysql -u root -p
SHOW DATABASES;
🔍 결과:
앞에서 만든 mydb 데이터베이스가 유지됨
📌 이유:
Volume 을 사용하면 데이터가 호스트에 남아 있으므로,
컨테이너를 삭제해도 데이터는 유지됨
8️⃣ 비밀번호 바꾸고 컨테이너 다시 실행
docker stop [컨테이너 ID]
docker rm [컨테이너 ID]
docker run -e MYSQL_ROOT_PASSWORD=pwd123 -p 3306:3306 \
-v 원하는경로:/var/lib/mysql -d mysql
docker exec -it [컨테이너 ID] bash
mysql -u root -p # ❌ 접속 안 됨
9️⃣ ❗ 왜 비밀번호가 변경되지 않았을까?
📌 이유:
/var/lib/mysql 경로에 기존 데이터가 이미 저장되어 있기 때문에,
MySQL은 초기화 과정을 건너뛰고 기존 설정을 유지함
즉, 비밀번호도 이전 password123 상태 그대로 유지됨
🔟 비밀번호를 변경하려면?
# 기존 볼륨 데이터 삭제
rm -rf 경로
# 윈도우 데스크탑 도커에서는 아래 명령어 사용
Remove-Item -Recurse -Force 폴더명
→ 이후 다시 docker run 명령어로 컨테이너 실행 시,
지정한 MYSQL_ROOT_PASSWORD 가 정상 반영됨
✅ 그림으로 이해하기
'코딩 > Docker' 카테고리의 다른 글
🐳 Docker로 MongoDB 실행시켜보기 (0) | 2025.05.12 |
---|---|
🐳 Docker로 PostgreSQL 실행시켜보기 (0) | 2025.05.09 |
🐳 Docker로 MySQL 실행해보기 - 1 (0) | 2025.05.07 |
🐳 Docker Voluem(도커 볼륨) (0) | 2025.05.02 |
🐳 [실습 ] Docker로 Redis 실행해보기 (0) | 2025.04.30 |
댓글