본문 바로가기
Docker

[Docker] Mysql 도커로 띄우기

by ghan2 2025. 7. 28.

https://ghan2.tistory.com/127

 

[DevOps] Nginx 도커로 띄우기, 왜 Docker인가?

https://ghan2.tistory.com/125 [DevOps] Apache와 Spring Boot 연결1. 왜 Apache와 Spring Boot를 연결할까?Spring Boot는 기본적으로 내장 톰캣을 사용한다. (처음에 스프링 부트로 설정해놓고 톰캣에 띄우려고 해서 애

ghan2.tistory.com

 

저번주에는 도커를 사용해서 웹 서버와 어플리케이션을 올렸고

이제 개발을 위한 데이터베이스를 띄워보려고 한다.

 

무료고 접근성이 좋은 mysql로 선택했다.

 

 

데이터 저장용 디렉토리 만들기
sudo mkdir -p /data/mysql
sudo chown -R 999:999 /data/mysql

 

chown으로 디렉토리의 소유자(owner)와 그룹(group)을 변경한다.

 

MySQL Docker 컨테이너 실행
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=myuser \                          (username)
-e MYSQL_PASSWORD=mypassword \     (password)
-p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
mysql:8.0

 

이렇게 실행만 해주면 mysql 서버가 생성된다!

 

신기행

docker exec -it craft mysql -u root -p

: Docker 컨테이너 안에서 MySQL 클라이언트를 실행해서 DB에 접속하는 명령어

💡 명령어 주석
exec 컨테이너 안에서 명령어 실행
-it (-i: interactive, -t: pseudo-TTY)→ 터미널처럼 입력받을 수 있게 만듦
craft 실행 대상 컨테이너 이름 👉  현재 MySQL 서버가 실행 중인 컨테이너
mysql 컨테이너 안에서 실행할 명령어 (MySQL 클라이언트)
-u root 접속할 MySQL 사용자: root
-p 비밀번호 입력받기 옵션 (실행 후 직접 입력)

mysql 접속

 

 

개발환경 어디서나 디비에  접속하고 싶어서 데이터베이스는 별도로 띄우려고 한다. 

 

서버 포트 열어주기
sudo ufw allow 3306

 

MySQL 사용자 권한을 외부 접속 가능하게 변경
-- 1. 사용자 생성 (이미 있다면 생략 가능)
CREATE USER 'craft'@'%' IDENTIFIED BY '{외부접속용 비밀번호}';

-- 2. 권한 부여
GRANT ALL PRIVILEGES ON craft.* TO 'craft'@'%';

-- 3. 권한 즉시 적용
FLUSH PRIVILEGES;

 

MySQL은 사용자 계장을 구분할 때

'user'@'host'와 같이 구분한다.

이는 단순히 사용자 이름만 보는게 아니라,

어디서 접속하는 사용자냐(host)까지도 분리해서 관리하는 것이다.

 

 

외부 접속 포트포워딩

이제 여기까지 했으면 공유기 페이지에서 3306을 통해 들어올 수 있도록 열어준다.

와이파이 기본 주소로 접속하면 거의 된다!

 

 

🥊 도커로 데이터베이스 띄우기 완료 ! 

spring: datasource: url: jdbc:mysql://{아이피주소}/{데이터베이스 이름}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: {사용자이름}
password: {비밀번호}

 

'Docker' 카테고리의 다른 글

[Docker] Docker Compose 기본 포맷  (0) 2024.11.23
[Docker] 도커에 대한 기본 이해  (0) 2024.11.22