์๋ก
๋งค๋ฒ ์๋ก์ด DB ์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋๋ง๋ค ๊ฒ์ํ๋ฉด์ ์ฐพ์๋ณด๊ธฐ๋ ๋ฒ๊ฑฐ๋กญ๊ณ , ๊ทธ๋ ๋ค๊ณ ์ธํ ์ฃผ๊ธฐ๋ ๊ทธ๋ ๊ฒ ์งง์ง ์์ ๊ธฐ์ต๋ ์ ๋์ง ์์์ ์ด๋ฒ ๊ธฐํ์ ์์ ๋ฌธ์ํ๋ฅผ ํ๊ณ ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
๋ชฉ์ฐจ
- Docker ์ค์น
- MariaDB Container ์ค์น
- MariaDB ์ฌ์ฉ์ ์ถ๊ฐ ๋ฐ user ๊ถํ ์ค์
- Dokcer์ ๋ค์ํ ๋ช ๋ น์ด
Docker ์ค์น
๋จผ์ Docker๊ฐ ์ค์น๋์ด ์์ง ์๋ค๋ฉด Docker๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. Docker์ ์ค์น๋ https://www.docker.com/์์ ๊ฐ๋ฅํฉ๋๋ค.
Docker๋ Docker Engine(Daemon)๊ณผ Docker CLI(Client)๋ฅผ Docker๋ผ๋ ์ฉ์ด๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ค์ Docker์์ ์ ๊ณตํ๋ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ง ๊ตฌ์ฑ ์์์ ๋๋ค.
- Docker Engine: Docker์ ๋ฐํ์ ๋ถ๋ถ์ผ๋ก, ๋ฐ๋ชฌ ํํ๋ก ์คํํ๋ ์ปจํ ์ด๋ ์์ง ๊ทธ ์์ฒด
- Docker CLI: ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ docker ๋ช ๋ น์ด ์ธํฐํ์ด์ค
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด, Docker Engine์ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๊ณ , Docker CLI๋ ์ฌ์ฉ์๊ฐ Docker Engine๊ณผ ์ํธ์์ฉํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ๋ณดํต Docker Engine์ ์ค์นํ ๋ Docker CLI๋ ๊ฐ์ด ์ค์น๋๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๋ Docker CLI์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด๊ณ Docker๋ฅผ ์ค์นํ๋ค๊ณ ํต์นญํด์ ์ด์ผ๊ธฐํฉ๋๋ค.
MariaDB Container ์ค์น
1. Docker Image ๊ฐ์ ธ์ค๊ธฐ
docker pull mariadb
์ ๋ช ๋ น์ด๋ฅผ ํตํด Docker Hub์์ MariaDB Image๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
Docker Image๋ ์คํ ๊ฐ๋ฅํ ์ํํธ์จ์ด ํจํค์ง๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐ ํ์ํ ์ฝ๋, ๋ฐํ์, ์์คํ ๋๊ตฌ, ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ค์ ๋ฑ์ ํฌํจํ ๋ชจ๋ ๊ฒ์ ํฌํจํ ํ์ผ์ ํํ์ ๋๋ค.
Docker Hub๋ Docker Image๋ฅผ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ ์๋น์ค์ ๋๋ค. ๋ชจ๋ ์ฌ์ฉ์๋ Docker Hub๋ฅผ ํตํด ์์ ์ด ๋ง๋ Docker Image๋ฅผ ์ ๋ก๋ํ๊ณ ๊ณต์ ํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ ๋ก๋ํ Docker Image ๋ํ ๊ฒ์ํ๊ณ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
docker images
์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ค์น๋ Docker Image๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
2. MariaDB ์ปจํ ์ด๋ ์์ฑ ๋ฐ ์คํ
docker run -p 3306:3306 --name {์ปจํ
์ด๋ ์ด๋ฆ ์์ฑ} -e MARIADB_ROOT_PASSWORD={๋น๋ฐ๋ฒํธ} -d mariadb
ex) docker run -p 3306:3306 --name test -e MARIADB_ROOT_PASSWORD=1234 -d mariadb
์ ๋ช ๋ น์ด๋ฅผ ํตํด MariaDB Docker Image๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค. ์ด๋ ๋ช ๋ น์ด ๊ฐ๊ฐ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- -p 3306:3306 : ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ์ ํฌํธ๋ฅผ ์ฐ๊ฒฐ (host-port:container-port), ํธ์คํธ์์ 3306 ํฌํธ ์ฐ๊ฒฐ ์ ์ปจํ ์ด๋ 3306 ํฌํธ๋ก ํฌ์๋ฉ
- --name test : ์์ฑํ๋ ค๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ test๋ก ์ง์
- -e MARIADB_ROOT_PASSWORD=1234 : ์ปจํ ์ด๋ ๋ด ํ๊ฒฝ๋ณ์ ์ค์ . mariadb์ root ์ฌ์ฉ์์ ์ํธ ์ง์
- -d: ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ
// ์คํ ์ค์ธ ์ปจํ
์ด๋๋ง ์กฐํ
docker ps
// ๋ชจ๋ ์ปจํ
์ด๋ ์กฐํ
docker ps -a
์ ๋ช ๋ น์ด๋ฅผ ํตํด ๋ชจ๋ ์ปจํ ์ด๋ ํน์ ์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
3. MariaDB์ ์ ์ํ๊ธฐ
์ปจํ ์ด๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด, ์ด์ ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด MariaDB ์๋ฒ์ ์ ์ํ ์ ์์ต๋๋ค.
docker exec -it {์ปจํ
์ด๋ ์ด๋ฆ} mariadb -uroot -p
ex) docker exec -it test mariadb -uroot -p
'mysql -uroot -p' ๋ช ๋ น์ด๋ฅผ ํตํด MariaDB์ root ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ์ํธ๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ๋ํ๋๋ค๋ฉด, ์ด์ ๋จ๊ณ์์ ์ค์ ํ root ์ฌ์ฉ์์ ์ํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผ ์ฌ๊ธฐ๊น์ง Docker์ MariaDB ์ค์น๊ฐ ๋๋ฌ๊ณ , ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ๊ณ , ํ ์ด๋ธ์ ๋ง๋ค๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์กฐํํ ์ ์์ต๋๋ค.
MariaDB ์ฌ์ฉ์ ์ถ๊ฐ ๋ฐ user ๊ถํ ์ค์
1. ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ฑ
create database {db_name};
ex) create database test;
2. ์ฌ์ฉ์ ์ถ๊ฐ
create user 'user_name'@'ip_address' identified by 'user_password';
ex) create user 'tester'@'%' identified by 'tester1234';
ex) create user 'tester'@'localhost' identified by 'tester1234';
์ ๋ช ๋ น์ด์์ ๋ปํ๋ ๊ฐ๊ฐ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- user_name: ์๋ก ์์ฑํ ์ฌ์ฉ์์ ์ด๋ฆ
- ip_address: ํด๋น ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋ ํธ์คํธ, %๋ก ์ง์ ํ๋ฉด ๋ชจ๋ ํธ์คํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ฐ๋ฅ
- user_password: ์ฌ์ฉ์์ ํจ์ค์๋
3. ์ฌ์ฉ์์๊ฒ ๊ถํ ๋ถ์ฌ
grant all privileges on db_name.* to 'user_name'@'ip_address';
ex) grant all privileges on *.* to 'tester'@'%';
์์ ๋ช ๋ น์ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ํ ๋ชจ๋ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
4. ๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
๋ง์ง๋ง์ผ๋ก ์๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์ฌ์ฉ์์ ๊ถํ ๋ณ๊ฒฝ ์ฌํญ์ ์ฆ์ ์ ์ฉํ๋๋ก ํฉ๋๋ค.
flush privileges;
MariaDB์ MySQL์ ์ฌ์ฉ์ ๊ถํ์ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ ํ๊ธฐ์ grant, revoke, set password ๋ฑ์ ๋ช ๋ น์ ํตํด ์ฌ์ฉ์ ๊ถํ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ฆ์ ์ ์ฉ๋์ง ์์ผ๋ฉฐ, ๋ณ๊ฒฝ์ฌํญ์ด ์ ์ฉ๋๋ ค๋ฉด ๊ถํ ์บ์๊ฐ ๋ค์ ๋ก๋๋์ด์ผ ํฉ๋๋ค.
flush privileges; ๋ช ๋ น์ ๊ถํ ์บ์๋ฅผ ๋ค์ ๋ก๋ํ๋๋ก ์๋ฒ์ ์ง์ํ๋ฏ๋ก, ์ฌ์ฉ์ ๊ถํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ๊ถํ์ ๋ณ๊ฒฝํ ํ์๋ ํญ์ flush privileges; ๋ช ๋ น์ ์คํํด์ผ ํฉ๋๋ค.
๋จ, ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ create user ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋์ผ๋ก ๊ถํ ์บ์๋ฅผ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ flush privileges;๋ฅผ ์คํํ ํ์๊ฐ ์์ต๋๋ค.
Docker์ ๋ค์ํ ๋ช ๋ น์ด๋ค
docker --help ๋ช ๋ น์ด๋ฅผ ํตํด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ Docker ๋ช ๋ น์ด๋ฅผ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- docker run: Docker ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, `docker run ubuntu` ๋ช ๋ น์ ubuntu ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ์ปจํ ์ด๋๋ฅผ ์คํํฉ๋๋ค.
- docker ps: ํ์ฌ ์คํ ์ค์ธ ๋ชจ๋ Docker ์ปจํ ์ด๋๋ฅผ ๋์ดํฉ๋๋ค. `-a` ์ต์ ์ ์ถ๊ฐํ๋ฉด (`docker ps -a`), ์คํ ์ค์ด์ง ์์ ์ปจํ ์ด๋๋ ํฌํจํ์ฌ ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ๋์ดํฉ๋๋ค.
- docker stop [container_id]: ์คํ ์ค์ธ Docker ์ปจํ ์ด๋๋ฅผ ์ค์งํฉ๋๋ค. `container_id`๋ ์ค์งํ๋ ค๋ ์ปจํ ์ด๋์ ID๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ID๋ `docker ps` ๋ช ๋ น์ ์ถ๋ ฅ์์ ํ์ธํ ์ ์์ต๋๋ค.
- docker start [container_id]: ์ค์ง๋ Docker ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ์ด ๋ช ๋ น์๋ ์ปจํ ์ด๋ ID๊ฐ ํ์ํฉ๋๋ค.
- docker restart [container_id]: Docker ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํฉ๋๋ค. ์ด ๋ช ๋ น์๋ ์ปจํ ์ด๋ ID๊ฐ ํ์ํฉ๋๋ค.
- docker rm [container_id]: Docker ์ปจํ ์ด๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด ๋ช ๋ น์๋ ์ปจํ ์ด๋ ID๊ฐ ํ์ํ๋ฉฐ, ํด๋น ์ปจํ ์ด๋๋ ๋ ์ด์ ์คํ ์ค์ด์ง ์์์ผ ํฉ๋๋ค.
- docker pull [image_name]: Docker ์ด๋ฏธ์ง๋ฅผ Docker Hub ๋๋ ๋ค๋ฅธ Docker ๋ ์ง์คํธ๋ฆฌ์์ ๋ก์ปฌ ์์คํ ์ผ๋ก ๋ค์ด๋ก๋ํฉ๋๋ค.
- docker rmi [image_id]: ๋ก์ปฌ Docker ์์คํ ์์ Docker ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- docker logs [container_id]: Docker ์ปจํ ์ด๋์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- docker exec: ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ๋ช ๋ น์ ์คํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, `docker exec -it [container_id] bash` ๋ช ๋ น์ ์คํ ์ค์ธ ์ปจํ ์ด๋์์ bash ์์ ์์ํฉ๋๋ค.
๊ฐ์ด ๋ณด๋ฉด ์ข์ ๊ธ
'BackEnd๐ฑ > DB & SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MySQL์์ VARCHAR์ TEXT์ ์ฐจ์ด (1) | 2023.09.17 |
---|---|
Redis์ ๋ฐ์ดํฐ ํ์ , ๋ช ๋ น์ด์ ํ์ฉ ์ฌ๋ก (0) | 2023.09.05 |
์ค๋ฌด์์ Redisson์ ์ฐ๊ฒฐํ๋ฉด์ ๊ฒช์ ๋ฌธ์ ์ ๋ค (2) | 2023.08.18 |
์ธ๋ฑ์ค๋ฅผ ์ํ๋ ์ฟผ๋ฆฌ๋ค (0) | 2023.03.23 |
[MySQL] UPSERT (ON DUPLICATE KEY UPDATE) (0) | 2022.05.23 |
[MySQL] SELECT ๋ฌธ์์ NULL ๊ฐ ์นํํ๊ธฐ (0) | 2022.05.12 |
๋๊ธ