프로젝트를 진행하기 위해 Docker Container를 띄워서 DB를 구축하기로 했습니다.
Docker를 사용하는 이유는 배포를 용이하게 위해서 입니다. 처음부터, 개발 환경과 배포 환경을 나누어서 개발하면 좋겠지만 최종 목표인 AWS에 배포하는 단계에 대해서는 아직 학습이 필요한 상태 입니다. 어쩔 수 없이 저는 Local 환경에 DB 서버를 구축해서 개발을 진행해야 하는데요. 배포시 Docker Container만 옮기면 되는 장점을 활용하기 위해 Local 개발이지만 Docker를 활용하게 되었습니다. 아래 내용 참고하시어 여러분들도 Docker를 활용한 DB 서버 구축에 도움이 되셨으면 좋겠습니다.
2. MariaDB Docker Container 생성
1. DockerHub에 올라와 있는 mariaDB image를 pull 합니다.
docker pull mariadb
https://hub.docker.com/_/mariadb
2. pull한 image를 활용해 container를 생성 하고 docker ps 명령어로 생성된 Container를 확인합니다.
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[비밀번호] --name [container명] mariadb
docker ps
3. mariaDB container 내부 진입
docker exec -it [container명] /bin/bash
4. mysql 접속
mysql -u root -p
5. Charset 변경 (utf8mb4)
- mariadb image에는 vim이 없기 때문에 설치
apt-get update && apt-get install nano vim
- /etc/mysql/my.cnf 파일 편집
vim /etc/mysql/my.cnf
- charset 관련 내용 추가 (아래 내용을 복사 하세요)
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
6. DataBase 생성
CREATE DATABASE [DB명];
// 예시) CREATE DATABASE test_db;
7. 사용자 권한 부여
프로젝트 진행시 root 사용자 보다는 특정 database에 접근 가능한 user를 생성하여 사용합니다.
GRANT ALL PRIVILEGES [db명].* to '[생성 할 user]'@'[접속 주소]';
FLUSH PRIVILEGES;
ex)
GRANT ALL PRIVILEGES test_db.* to 'test_user'@'%';
GRANT ALL PRIVILEGES test_db.* to 'test_user'@'localhost';
GRANT ALL PRIVILEGES test_db.* to 'test_user'@'xxx.xxx.xxx.xxx';
8. DBeaver 접속 확인
프로젝트 진행시, DBeaver나 HeidiSQL 같은 GUI Tool을 사용하는 것이 편리합니다. DBeaver를 예시로 들면, Connection settings에서 Server Host, Port, Database, Username, Password 를 앞서 생성한 정보로 입력 후 OK 버튼을 누르면 연동이 완료됩니다.
'old > 토이프로젝트' 카테고리의 다른 글
Django - Swagger 연동하기 2편 - swagger parameter schema (0) | 2022.05.05 |
---|---|
Django - Swagger 연동하기 1편 - 기본 설정 (0) | 2022.05.02 |
토이 프로젝트를 시작한 이유 (0) | 2021.11.08 |