Docker๊ธฐ๋ฐ˜์˜ MySQL ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

2020. 12. 29. 21:02ใ†๐Ÿ™‹๐Ÿป‍โ™€๏ธ Study/โœ”๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ( Database )

๋ฐ˜์‘ํ˜•

์˜ค๋Š˜์€ ํ•™๊ต์—์„œ ๋ฐฐ์› ๋˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜์—… ์‹ค์Šต ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

Docker๋Š” ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ • ํ•˜ ์— ๋„์ปค๋ฅผ ํ™œ์šฉํ•œ Mysql ์„ค์น˜ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋„์ปค ๋ช…๋ น์–ด์™€ Mysql ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.  

๐Ÿ‘‰๐Ÿป ์ œ ๋…ธํŠธ๋ถ์€ Mac OS์—ฌ์„œ,  Mac ์„ ์ด์šฉํ•œ Docker ๊ธฐ๋ฐ˜์˜ MySQL ์‚ฌ์šฉ๋ฒ• ์ž…๋‹ˆ๋‹ค : )

 

 

๐Ÿ“Œ Docker์— MySQL ์„ค์น˜ํ•˜๊ธฐ

DockerHub์— MySQL์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ์„ค์น˜ ์—†์ด ๋ฐ”๋กœ mysql์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋งŒ์•ฝ, MySQL ์ด๋ฏธ์ง€๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด?!

docker pull mysql:8.0.17
docker pull mysql ์‹œ์—๋Š” ์ตœ์‹  ๋ฒ„์ „ 'latest'๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค!

 

โœ”๏ธ MySQL ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑํ•˜๊ธฐ

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD={password} --name={mysql} mysql5.7

 

mysql ํฌํŠธ๋ฒˆํ˜ธ๋Š” '3306'์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ mysql ์„ ๋งŒ๋“ค์‹œ ์—๋Š” 3307:3306, 3308:3306 ... ์ด๋Ÿฐ์‹์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

{password} ์ž๋ฆฌ์— ์›ํ•˜๋Š” password๋ฅผ , {mysql} ์ž๋ฆฌ์— ์›ํ•˜๋Š” mysql name ๋ช…์„ ๋„ฃ์–ด์ฃผ์„ธ์š”.

 

๋งŒ์•ฝ, mysql5.6์„ ์„ค์น˜ํ•˜๋ ค๋ฉด ?! mysql5.7 ์„ mysql5.6์œผ๋กœ ์›ํ•˜๋Š” ๋ฒ„์ „์— ๋งž๊ฒŒ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

 

 

 

docker ps -a

์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ MySQL ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MySQL ์‹คํ–‰์ „ ๊ผญ ํ•ด๋‹น mysql์˜ STATUS๊ฐ€ Up ์ธ์ง€ ํ™•์ธํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค !

 

 

 

โœ”๏ธDocker MySQL ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘ํ•˜๊ธฐ (STATUS - Up ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•)

์œ„์™€ ๊ฐ™์ด ๋งŒ์•ฝ MySQL ์‹คํ–‰ ์ „ ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์˜ STATUS๊ฐ€ Exited ๋ผ๋ฉด ?!

docker start {์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„ ๋˜๋Š” ์•„์ด๋””}

docker start ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

โœ”๏ธDocker MySQL ์ปจํ…Œ์ด๋„ˆ ์ ‘์†ํ•˜๊ธฐ

docker exec -it {mysql1} bash

์ด์ œ MySQL ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ด๋ณผ ์ฐจ๋ก€ ์ธ๋ฐ์š”. ์•„๊นŒ ๋งŒ๋“ค์–ด์ฃผ์—ˆ๋˜ mysql1์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด docker exec -it ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด 

ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์†ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

โœ”๏ธMySQL ์„œ๋ฒ„ ์ ‘์†ํ•˜๊ธฐ

root@157fa190bbb8: mysql -u root -p

mysql -u root -p ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์œ„์—์„œ ์ƒ์„ฑํ•œ mysql5.7 ๋ฒ„์ „์˜ MySQL ์„œ๋ฒ„์— ์ ‘์† ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”ฅ์ด๋•Œ password๋Š” ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์‹œ์— ๋งŒ๋“ค์—ˆ๋˜ {password} ๋ฅผ ์ž…๋ ฅํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

 

๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์ „ > 

๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ >

 

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅํ•˜์‹œ๋ฉด ์ด์ œ ํ•ด๋‹น MySQL ์„œ๋ฒ„ ์ ‘์†์— ์„ฑ๊ณตํ•œ๊ฑฐ์˜ˆ์š”.

์ด์ œ MySQL์˜ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ MySQL ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

๊ฐ„๋‹จํ•œ MySQL ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ธฐ ์ „์— ์ €๋Š” ๋ฏธ๋ฆฌ https://launchpad.net/test-db ์˜ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์‹คํ–‰๋œ ์˜ˆ์‹œ๋กœ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

Launchpad(test-db) ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๋ฒˆ ํฌ์ŠคํŒ…์œผ๋กœ ์ฐพ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค!

์•„๋ž˜ ๋ช…๋ น์–ด๋“ค์€ ๊ฐ„๋‹จํžˆ ์‹ค์Šตํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ถ€๊ฐ€์ ์ธ ์„ค๋ช…์—†์ด ๋ช…๋ น์–ด๋งŒ ์†Œ๊ฐœํ•ด๋“œ๋ฆด๊ฒŒ์š” : )

 

โœ”๏ธDatabase ๋ชฉ๋ก ์กฐํšŒํ•˜๊ธฐ

show databases;

 

โœ”๏ธDatabase ์‚ฌ์šฉํ•˜๊ธฐ

use {database_name};

โœ”๏ธDatabase ์˜ table ๋ชฉ๋ก ์กฐํšŒํ•˜๊ธฐ

show tables;

โœ”๏ธtable์˜ describe ๋ณด๊ธฐ

desc {table_name};

 

desc {table_name}\G;

\G ์˜ต์…˜์„ ๋’ค์— ๋ถ™์ด๋ฉด ์ƒ์„ธํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์–ด์š”.

๊ฐ€๋” \G ์˜ต์…˜์„ ๋„ฃ์ง€ ์•Š์•„ ํ•œ ์—ด์— ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค ์ถœ๋ ฅํ•ด๋ฒ„๋ฆฐ๋‹ค๋ฉด ์ฟผ๋ฆฌ๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…˜์ด์˜ˆ์š”.

โœ”๏ธtable์˜ ์ฟผ๋ฆฌ ํ™•์ธ(์กฐํšŒ)ํ•˜๊ธฐ

table์˜ create ์ฟผ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ, \G ์˜ต์…˜์„ ์ด์šฉํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ’์„ ํ›จ์”ฌ ๋ณด๊ธฐ ํŽธํ•˜๊ฒŒ ์ถœ๋ ฅํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

show create table {table_name}\G;

โœ”๏ธtable column ์กฐํšŒํ•˜๊ธฐ 

select ๋ฌธ์€ ๋„ˆ๋ฌด ์œ ๋ช…ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜์ฃ ! ํ…Œ์ด๋ธ”์˜ ๋‚ด์šฉ๋“ค์„ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด select๋ฌธ์„ ์ด์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

select * from {table_name};

\G ์˜ต์…˜์„ ๋ถ™์ด๊ฒŒ ๋˜๋ฉด ์—ด ํ˜•ํƒœ๋กœ column ๋‚ด์šฉ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

select * from {table_name}\G;

โœ”๏ธMySQL ์ข…๋ฃŒ

exit์™€ quit ๋ช…๋ น์–ด ๋ชจ๋‘ MySQL์„ ์ข…๋ฃŒํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

exit
quit

 

Docker MySQL ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์•„์˜ˆ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด? exit ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ข…๋ฃŒํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ Docker ๊ธฐ๋ฐ˜์˜ MySQL ์„ค์น˜ ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”.

์•„์ง SQL ๋ฌธ๋“ค์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ SQL๋ฌธ ์‹ค์Šต ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๊ฑธ ์ถ”์ฒœํ•ด ๋“œ๋ ค์š”!

 

SQL Tutorial

SQL Tutorial SQL is a standard language for storing, manipulating and retrieving data in databases. Our SQL tutorial will teach you how to use SQL in: MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, and other database systems. Start learn

www.w3schools.com

์ •๋ฆฌ๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์–ด SQL๋ฌธ ๊ณต๋ถ€ํ•˜์‹ค๋•Œ ์œ ์šฉํ•˜์‹ค ๊ฑฐ ๊ฐ™์•„์š”!

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์œ„์—์„œ ๋ง์”€๋“œ๋ฆฐ https://launchpad.net/test-db ์˜ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ฐ˜์‘ํ˜•