[MYSQL] server 8.0 datadir 변경하기 (feat. 오류 1067)

febCho·2024년 7월 30일
0

오류 해결

목록 보기
8/19
post-thumbnail

문제

지난 게시물에 이어 1067 오류를 해결해 나가는 과정을 기록하고자 한다.
1. [MYSQL] my.ini 파라미터 설정 값 확인하기 (feat. 오류 1067)
2. [MYSQL] time_zone='Asia/Seoul' : Error Code 1298 해결 방법

앞선 게시물에서 언급한 것처럼 1067 오류는 대부분 my.ini 파일에 문제가 있을 때 발생한다. 만약 오타를 낸 것도 아니고, 설정에 꼭 필요한 값을 넣은 것뿐인데 문제가 생긴다면 나와 같은 사례가 아닐까 싶다.

나의 경우 time_zone 외 collation, character-set 등을 utf8mb4로 지정하는 과정에서 문제가 생겼고, 값을 변경하려고 갖은 방법을 동원해 봤지만 mysql sever 5.5.3 버전에서는 불가했다.

결국 utf8mb4가 기본값이 된 8.0 버전을 설치하고 이후에 필요한 것들을 수정/확인하는 방식으로 문제를 해결하였다.

해결

8.0 버전을 설치하면 utf8mb4가 기본값이라 간단히 해결이 될 것임에도 5.5.3 버전을 고집했던 이유는 다음과 같다.

  1. 사내 DB 설치 매뉴얼이 5.1 버전으로 안내되어 있었다.
  2. 하지만 utf8mb4_unicode_ci를 사용해야 했기에 utf8mb4가 추가된 5.5.3 버전을 다운 받게 되었다.
  3. vm이 아닌 로컬에서 8.0 버전을 설치하며 테스트한 결과, 설치 과정에서 몇몇 단계가 빠져 있었다.
  4. 무엇보다 datedir을 D드라이브로 지정해야 했는데, 5버전과 달리 8버전은 커스텀이 불가했다. (내가 못 찾았을 수도 있다.)

이를 해결한 과정은 다음과 같다.

  1. MySQL 서버의 data directory를 찾는다.
    아마도 나처럼 C드라이브에서 찾을 수 있을 것이다.
    ProgramData 폴더의 경우 보기를 클릭해 '숨긴 항목'을 체크해야 한다.

  2. 그 다음 해당 경로에서 Data 폴더를 통째로 잘라내기(ctrl + x)한다.

  3. 원하는 폴더에 붙여 넣은 뒤 해당 경로를 복사해둔다.
    ex. D:\MySQL\MySQL Server 8.0

  4. 그 다음 my.ini 파일을 메모장으로 연다.
    my.ini 파일은 대부분 basedir, 즉 data directory가 있던 ProgramData 하위 폴더에 있다.
    my.ini 수정 권한 부여하는 방법

  5. ctrl + F를 눌러 datadir을 검색한다.
    이 경로는 mysql의 Path to the database root로 DB 구동 시 my.ini 파일을 읽어 바꾼 datadir 경로를 제대로 읽을 수 있도록 바꾸어 주어야 한다.

\Data까지 포함해야 한다는 점!
변경 전 : datadir=C:/ProgramData/MySQL/MySQL Server 8.0\Data (설치한 기존 경로)
변경 후 : datadir=D:\MySQL\MySQL Server 8.0\Data (바꾼 그 경로)

  1. 저장한 후, 윈도우 검색창에 '서비스'를 검색 → MySQL을 재시작 해준다.

  2. datadir을 제대로 인식했는지 확인하는 방법은 아래 쿼리의 실행 결과를 보는 것이다.

show variables like 'datadir';


오탈자 없이 수정이 잘 되었다면 위와 같이 변경한 경로로 결과값이 확인될 것이다.

- 여담

Data directory로 D드라이브를 설정해 주는 것 외에도 몇 가지 생략된 과정이 있어 5버전을 설치했다고 앞서 말했다.

혹시 나와 같이 의문을 가지는 분들이 있을 것 같아 기록해본다.
내가 선택해야 했던 설정값은 database usage, approximate number of concurrent connections to the sever, default character set이었다.

8.0.39 버전 설치 시에는 이런 과정들이 생략되어 있었는데, 검색해 보니 다음과 같다고 한다.

결국 내가 선택하려고 했던 모든 설정값들이 8.0 버전에서는 이미 지원하는 거라 골라줄 필요가 없었던 것 ~.~

오라클만 쓰다가 mysql을 처음 사용해 봐서 몰랐던 사실들이었고 잘 배웠다!

profile
Done is better than perfect.

0개의 댓글