old/토이프로젝트

[개발환경] 1. DB 서버 구축

뒷골목프로그래머 2022. 3. 22. 20:16
반응형

프로젝트를 진행하기 위해 Docker Container를 띄워서 DB를 구축하기로 했습니다.

Docker를 사용하는 이유는 배포를 용이하게 위해서 입니다. 처음부터, 개발 환경과 배포 환경을 나누어서 개발하면 좋겠지만 최종 목표인 AWS에 배포하는 단계에 대해서는 아직 학습이 필요한 상태 입니다. 어쩔 수 없이 저는 Local 환경에 DB 서버를 구축해서 개발을 진행해야 하는데요. 배포시 Docker Container만 옮기면 되는 장점을 활용하기 위해 Local 개발이지만 Docker를 활용하게 되었습니다. 아래 내용 참고하시어 여러분들도 Docker를 활용한 DB 서버 구축에 도움이 되셨으면 좋겠습니다.

 

1. MariaDB Image Pull

2. MariaDB Docker Container 생성

3. MariaDB Container 진입

4. Mysql 접속

5. Charset 변경

6. DataBase 생성

7. 사용자 권한 변경

8. DBeaver, HeidiSQL 연결

 


 

1. DockerHub에 올라와 있는 mariaDB image를 pull 합니다.

docker pull mariadb

https://hub.docker.com/_/mariadb

 

Mariadb - Official Image | Docker Hub

Note: the description for this image is longer than the Hub length limit of 25000, so has been trimmed. The full description can be found at https://github.com/docker-library/docs/tree/master/mariadb/README.md. See docker/hub-beta-feedback#238 for more inf

hub.docker.com

 

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

mariaDB container 진입 / mysql 접속

 

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

/etc/mysql/my.cnf 파일 charset 추가

 

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 접속 확인

  프로젝트 진행시, DBeaverHeidiSQL 같은 GUI Tool을 사용하는 것이 편리합니다. DBeaver를 예시로 들면, Connection settings에서 Server Host, Port, Database, Username, Password 를 앞서 생성한 정보로 입력 후 OK 버튼을 누르면 연동이 완료됩니다.

DBeaver DB connection settings

 

DBeaver Connect 완료

 

반응형