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๋ฌธ ๊ณต๋ถํ์ค๋ ์ ์ฉํ์ค ๊ฑฐ ๊ฐ์์!
๋ค์ ํฌ์คํ ์์๋ ์์์ ๋ง์๋๋ฆฐ https://launchpad.net/test-db ์ ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค!
'๐๐ปโโ๏ธ Study > โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ( Database )' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker/MySQL] JDBC - PreparedStatement ์ค์ต (2) | 2020.12.31 |
---|---|
[Docker/MySQL] JDBC - Statement ์ค์ต (0) | 2020.12.31 |
MySQL Launchpad(test-db) ๋ค์ด๋ก๋ ๋ฐ ์ค์น (0) | 2020.12.29 |