DB Settings

Violet_Evgadn·2023년 4월 23일
0

DB연동

목록 보기
7/22

MariaDB 설치

여러 가지 DBMS에 대해서는 나중에 CS 쪽을 공부할 때 제대로 다룰 것 같다.

하지만 나는 MariaDB를 자주 활용하는데, 가장 큰 이유는 "공짜"라는 것이고(너무 좋아요 공짜) Oracle 쪽 DBMS는 그쪽만의 Query가 따로 존재하는데 MariaDB는 MySQL의 Query 문법을 활용하므로 나에게 더욱 익숙한 문법을 활용할 수 있다는 점이다.

그렇다면 MariaDB 설치를 순서대로 알아보자

1. MariaDB 공식 사이트 접속 :

2. Download 버튼 클릭

3. 원하는 버전의 msi 파일 다운로드

여기서 주의할점이 몇 가지 있다.

첫 번째, 내가 원하는 OS의 파일을 다운로드할 것

가끔 버전을 너무 최신으로 하다보면 Windows 파일은 없거나 하는 경우가 존재한다. 이럴 때는 당황하지 않고 버전을 좀 내려서 자신이 활용할 OS의 파일을 다운로드하여야 한다는 점이다.

(최근 컴퓨터라면 위 사진처럼 지정해주면 될 것이다.)

두번째, 버전을 잘 확인할 것

위 사진에서 보라색 창을 보면 10.6 Release를 추천한다고 되어 있다. 만약 안정성 등을 원하는 프로젝트를 수행할 때에는 최신 버전을 활용하는 것이 선호되지 않을 수 있다.

결국 조금 오래되어 많이 활용되었던 버전이거나 안정성이 인정된 버전을 활용하는 것이 Java에서는 LTS를 활용하는 것처럼 좋을 수 있다.

아래 HeidiSQL도 그렇지만, 특히 모든 것을 다 완벽하게 수행했는데 에러가 뜨는 경우 모두는 아니지만 대부분 버전 문제인 경우가 많기 때문에 버전은 특히 신경 써서 고르자

4. 아래 창이 뜰 때까지 Next 클릭

이 창에서 root password와 Confirm을 입력하라고 되어 있다.

우리는 DB를 접속할 때 IP 주소와 Port 번호를 입력하고, 이후에 Username과 Password를 입력해야 함을 이전 Section들을 통해 확인할 수 있었다.

이 root password가 바로 Password에 해당되는 값이다. Confirm은 비밀번호 다시 입력 같은 것으로 root password와 같은 값을 입력해주면 된다.

Username은 Default로 "root"일 것이다. 나중에 변경할 수도 있지만, Test나 학습용으로 할 때는 굳이 바꾸지 않아도 충분히 활용 가능하므로 이를 수정하진 않을 것이다.

여기서 중요한 점이 "Use UTF8 as default server's character set" 버튼이다.

UTF8 설정이 필요한 이유부터 설명하자면, "한글의 활용" 때문이다. 만약 UTF8 설정을 해놓지 않는다면 한글 데이터가 Server측 DB로 들어올 때 깨져서 저장이 된다. 즉 Data의 손실이 발생하게 되는 것이다.

한국에 사는 이상 한글에 대한 서비스를 개발할 일이 많을 것이며, 이 때 가장 중요시 생각해야 하는 것이 "한글의 깨짐 여부"이다. 그리고 아래에 이에 대한 설정법을 말하겠지만, 그중에서 1개 과정을 줄여줄 수 있는 생각보다 편한 기능이니 체크하여 설치하기를 추천한다

이렇게 하면 설치 완료이다.

아마 MySQL Client라는 MariaDB를 실행시킬 수 있는 CMD 창이 생겼을텐데, 이 메뉴가 생겼다면 설치가 완료된 것이다.

그런데 보다시피 MySQL을 실행시키기 위해서는 CUI 방법밖에 없다는 것을 알 수 있다. 하지만 CUI는 사용하기 매우 불편하고 한눈에 들어오지도 않는다는 단점이 있다.

그래서 GUI로 MariaDB를 실행시킬텐데, 이를 위한 Tool이 HeidiSQL이다.


HeidiSQL

먼저 HeidiSQL에 대한 설치 방법은 따로 명시하지 않겠다. 왜냐하면 아마 MariaDB를 설치한 순간 HeidiSQL도 자동으로 설치되었을 것이기 때문이다.

이처럼 HeidiSQL은 MariaDB와 연결된 가장 가까운 GUI DB 처리 툴이며, 필자도 HeidiSQL을 활용해서 DB를 활용하겠다.

접속창

아마 HeidiSQL을 실행하면 가장 먼저 볼 수 있는 창일 것이다.

위에서 지정한 MariaDB의 IP 주소와 사용자(Username), 암호(Password)를 통해 해당 DB에 접근할 수 있게 되는 것이다.

나는 Local에 설치된 DB를 활용할 것이므로 Local IP 주소인 127.0.0.1, 사용자는 Default 값인 root이며 Password는 위에서 지정했던 root로 입력하면 접속이 가능하다.

Port는 3306이라고 되어 있는데, 꼭 정해진 것은 아니지만 8080은 http, 8443은 https가 많이 활용하는 것처럼 국룰인 Port가 존재한다. 그리고 DB에서 국룰인 Port는 3306이고, 별다른 설정을 하지 않았다면 Default로 3306으로 설정되어 있을 것이다.

이후 열기를 선택하면 내가 접속할 DB를 GUI 형태로 볼 수 있다.

기본창

먼저 왼쪽에 Local 아래 있는 것들이 DB를 의미한다. 즉 현재 Loca의 MariaDB 서버에는 database, information_schema, mysql, performance_schema, sys라는 DataBase가 존재하는 것이다.

먼저 이 중에 information_schema, mysql, performance_schema, sys는 기본적으로 생성되는 DataBase이므로 건들지 말자.

(나중에 DB에 대해 빠싹해지면 이 또한 수정할 수 있겠으나, DB 초심자인 나는 저걸 삭제한 이후의 후환이 두려워서 건들지도 않았다)

그렇다면 DB를 어떻게 설치할까? database라는 이름을 가진 DataBase를 한 번 생성해보자.


DataBase 생성 과정

1. DataBase 생성

Local이름의 가장 상위 디렉터리에 대해 마우스 오른쪽 클릭을 하고 위 사진처럼 클릭하면 Database를 생성할 수 있다.

2. Database 설정

위 창을 통해 Database에 대한 설정을 할 수 있다. 우리는 Database이름을 database라고 지정하고 시기 때문에 "입력" 창에 database를 입력해주면 된다.

자 여기에서 중요한점, 조합이다.

조합은 간단히 말하자면 "Default Character Set"이다. Database를 설정할 때 "어떤 형식의 문자열 형식으로 문자열을 관리할 것인가"를 지정해줘야 한다. 이 방법에는 UTF8이라는 대표적인 방식도 존재하고 latin이라는 약간 생소한 문자열 형식도 존재한다.

그리고 여기서 "utf8mb4_general_ci", 혹은 utf8이 포함된 general_ci 조합을 선택해야 이후 추가 설정 없이도 한글을 활용할 수 있다.

만약 다른 조합을 선택하였을 경우 한글을 저장했을 때 DB 상에서 깨질 수가 있고, 이를 처리하기 위해 추가적인 과정을 더 거쳐야 할 수도 있다.

기억하자. 꼭 UTF8이 포함된 조합을 활용하자!


DB 활용

테이블 생성

Table을 생성하고 싶은 Database를 클릭하고 마우스 오른쪽을 클릭하면 위와 같은 형식으로 테이블을 만들 수 있다.

이후 이름 Section에 내가 원하는 테이블명을 입력하고, 추가 버튼을 클릭해서 Column을 추가할 수 있다.

이 부분은 DB를 제대로 공부하면 바로 활용할 수 있을만큼 직관적으로 구성되어 있기 때문에 설명은 부가적으로 하지 않겠다.

Table에 저장된 데이터는 "테이블" 옆에 "데이터" 섹션을 선택하면 볼 수 있다.

쿼리

사실 거의 다 설명이 끝났지만 이 부분은 꼭 설명하고 싶어 추가했다.

물론 GUI를 통해서 모든 데이터를 처리할 수 있으나 Query문을 사용하고 싶을 경우도 존재할 것이다. 이때 굳이 CUI로 들어가지 않아도 HeidiSQL에서도 처리할 수 있다.

데이터 Section 옆에 쿼리 Section을 선택하여 아래와 같이 특정 Query를 수행시킬 수 있다.

또한 .sql 파일이 존재한다면 해당 파일을 가지고 와서 그대로 실행시킬 수도 있다.

Database 복제

Database를 복제하는 방법은 Database를 통째로 복제한다기 보다는 복제할 Database형태와 똑같은 Database를 만들 수 있는 Query문을 활용하는 방식이다.

복제를 원하는 Database를 클릭후 마우스 오른쪽 클릭, 이후 데이터베이스를 SQL로 내보내기 하면 내가 원하는 Database 그대로를 형성할 수 있도록 Query문을 만들어 .sql 파일 형식으로 만들어준다.

  • 데이터베이스, 테이블 : 생성
  • 데이터 : 원하는 것으로 지정해도 된다. 처음엔 DELETE+INSERT길래 원래 Table을 삭제하는가 싶었는데 그건 아니고, "복제된 Database가 저장될 DB Server"에 해당 Database가 존재한다면 어떻게 처리할지에 대한 방법을 지정하는 것이다. 나는 DB를 복제하는 상황은 대부분 기존 데이터를 밀어버리는 상황이라고 생각해서 DELETE+INSERT를 많이 활용한다
  • 파일명 : 내가 원하는 파일명으로 지정하면 된다. 확장자명만 .sql을 가지도록 해주자.

이렇게 만들어진 .sql 파일을 HeidiSQL에서 실행만 시켜주면 다른 DB Server에서도 해당 데이터베이스를 활용할 수 있게 되는 것이다


한글이 깨지는 문제 해결

100번의 상황이 있다면 한글이 깨지는 99번의 상황은 바로 Character Set 지정을 잘못한 것이다. 이를 해결하기 위해 Character Set을 바꾸기 위한 설정법을 알아보자

1. Character Set 확인

대부분의 한글 깨짐이 Character Set 때문에 생기는 건 맞지만 그래도 실제로 Characeter Set을 확인해볼 필요가 있다. 따라서 확인할 DataBase에 가서 아래 Query문을 입력하자

  SHOW VARIABLES LIKE 'c%';

Variabes 중에서 c로 시작하는 모든 Variable을 검색하는 건데, 사실상 Character와 Collation이 조건을 만족하는 Variables 대부분을 차지하므로 위처럼 검색한다. 만약 아래 사진과 같이 utf8, 혹은 utf8mb4가 아닌 다른 값이 character_set이나 collation으로 시작하는 Variables의 Value로 들어가 있다면 Character Set이 문제인 것이 확실해지는 것이다

2. my.ini 변경

먼저 MariDB에 대한 설정 파일을 수정해줘야 할 필요가 있다.

C 드라이브 → MariaDB {버전} → data → my.ini 경로에 아마 my.ini 파일이 존재할 것이다.

그리고 아래와 같이 my.ini 파일을 수정해주면 된다

[mysqld]
datadir=C:/Program Files/MariaDB 10.8/data
port=3306
innodb_buffer_pool_size=998M
character-set-server=utf8
collation-server=utf8_general_ci
init_connect=SET collation_connection=utf8_general_ci
init_connect=SET NAMES utf8
[client]
port=3306
plugin-dir=C:\Program Files\MariaDB 10.8/lib/plugin
default-character-set=utf8
[mysql]
default-character-set=utf8

나중에 이 my.ini에 설정을 많이 달아서 더 많은 Default 설정을 할 수 있다고는 하는데 이는 나중에 다시 알아보기로 하고, 일단 한글 깨짐 문제에 대해서만 집중하자.

위 my.ini 파일에서 원래 my.ini 파일에서 추가된 내용은 아래와 같다

  • character-set-server=utf8
  • collation-server=utf8_general_ci
  • init_connect=SET collation_connection=utf8_general_ci
  • init_connect=SET NAMES utf8
  • default-character-set=utf8([client]쪽)
  • default-character-set=utf8([mysql] 쪽)

3. Database 설정 바꿔주기

그런데 my.ini라는 것이 결국 "Database를 초기화할 때" 필요한 설정값들을 저장해 놓은 파일이기 때문에 이미 만들어 놓은 Database나 Table에 대해서는 위 설정이 적용이 안 되는 것이다.

즉, 이미 한글 깨짐 현상이 발생하고 있는 Database에 대한 문제는 해결이 되지 않은 것이다.

이를 해결하기 위해 아래 Query문을 통해 Character Set을 변경할 수 있다

  ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;

4. Chracter Set 재확인

다시 "SHOW VARIABLES LIKE 'c%'" 명령어를 통해 확인해보면 아래 사진과 같이 UTF8(or utf8mb4)로 모두 설정이 바뀌었음을 알 수 있다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글