๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Docker

[Docker] Docker๋กœ MySQL ์‹คํ–‰ํ•ด๋ณด์ž! (๋ณผ๋ฅจ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋‚ ์•„๊ฐ€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ๊นŒ์ง€)

by carrot0911 2025. 5. 14.

Docker๋กœ MySQL ์‹คํ–‰์‹œ์ผœ๋ณด๊ธฐ

 

MySQL ์ด๋ฏธ์ง€๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql

๐Ÿ‘‰  -e MYSQL_ROOT_PASSWORD=password123 : -e ์˜ต์…˜์€ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.
๐Ÿ‘‰  Dockerhub์˜ MySQL ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ MYSQL_ROOT_PASSWORD๋ฅผ ์ •ํ•ด์ฃผ์–ด์•ผ๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋œ๋‹ค๊ณ  ์ ํ˜€์žˆ๋‹ค.

$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ echo $MYSQL_ROOT_PASSWORD # MYSQL_ROOT_PASSWORD๋ผ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ฐ’ ์ถœ๋ ฅ
$ export # ์„ค์ •๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถœ๋ ฅ

 

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž˜ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์ฒดํฌ

$ docker ps

 

์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ ์—๋Ÿฌ ์—†์ด ์ž˜ ์‹คํ–‰๋๋Š” ์ง€ ๋กœ๊ทธ ์ฒดํฌ

$ docker logs [์ปจํ…Œ์ด๋„ˆ ID ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ช…]

๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ด

๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ

 

MySQL ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ์ ‘์†

$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

์ปจํ…Œ์ด๋„ˆ์—์„œ MySQL์— ์ ‘๊ทผ

$ mysql -u root -p

MySQL ์ ‘๊ทผ์— ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ

mysql> show databases;

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ

mysql> create database mydb;
mysql> show databases;

์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑ

# ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop [MySQL ์ปจํ…Œ์ด๋„ˆ ID]
$ docker rm [MySQL ์ปจํ…Œ์ด๋„ˆ ID]

# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -d mysql
$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ mysql -u root -p
mysql> show databases; # ์•„๊นŒ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—†์–ด์ง„ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰  ๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜์ง€ ์•Š์•„์„œ MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ญ์ œํ•จ๊ณผ ๋™์‹œ์— MySQL ๋‚ด๋ถ€์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋˜์–ด ์—†์–ด์กŒ๋‹ค.

 

 

๋ณผ๋ฅจ์„ ํ™œ์šฉํ•ด์„œ MySQL ์ปจํ…Œ์ด๋„ˆ ๋„์šฐ๊ธฐ

$ cd /Users/seungchan/Documents/Develop
$ mkdir docker-mysql # MySQL ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ์€ ํด๋” ๋งŒ๋“ค๊ธฐ

# docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v {ํ˜ธ์ŠคํŠธ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ}/mysql_data:/var/lib/mysql -d mysql
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/seungchan/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql

๐Ÿ‘‰  pwd ๋ช…๋ น์–ด๋กœ ๋ณผ๋ฅจ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•œ ๋’ค ์ž…๋ ฅํ•ด์ค˜์•ผ ํ•œ๋‹ค.
๐Ÿ‘‰  ์ฃผ์˜!! mysql_data ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ์•ˆ๋œ๋‹ค. ๊ทธ๋ž˜์•ผ ์ฒ˜์Œ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ mysql ๋‚ด๋ถ€์— ์žˆ๋Š” /var/lib/mysql ํŒŒ์ผ๋“ค์„ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๋กœ ๊ณต์œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. mysql_data ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“์„ ๊ฒฝ์šฐ, ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ์˜ /var/lib/mysql ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ ์‚ญ์ œํ•œ ๋’ค์— mysql_data๋กœ ๋ฎ์–ด์”Œ์›Œ๋ฒ„๋ฆฐ๋‹ค.
๐Ÿ‘‰  DB์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ์ด /var/lib/mysql์ธ์ง€๋Š” Dockerhub MySQL์˜ ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋‹ค.

Dockerhub MySQL ๊ณต์‹ ๋ฌธ์„œ

MySQL ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ 

$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash

$ mysql -u root -p

mysql> show databases;
mysql> create database mydb;
mysql> show databases;

์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑ

# ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop [MySQL ์ปจํ…Œ์ด๋„ˆ ID]
$ docker rm [MySQL ์ปจํ…Œ์ด๋„ˆ ID]

# ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/seungchan/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql

$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash
$ mysql -u root -p
mysql> show databases; # ์•„๊นŒ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ทธ๋Œ€๋กœ ์กด์žฌํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ด

๋ณผ๋ฅจ์„ ํ™œ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

MySQL ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋„์›Œ๋ณด๊ธฐ

# ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ
$ docker stop [MySQL ์ปจํ…Œ์ด๋„ˆ ID]
$ docker rm [MySQL ์ปจํ…Œ์ด๋„ˆ ID]

# ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ”๊ฟ”์„œ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ
$ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/seungchan/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql

$ docker exec -it [MySQL ์ปจํ…Œ์ด๋„ˆ ID] bash
$ mysql -u root -p # ์ ‘์†์ด ์•ˆ ๋จ...