본문 바로가기

IT 고찰/일상에서만난IT오류

MYSQL SERVER 8.0 TIMEZONE 관련 my.ini 문제

문제 상황

새 컴퓨터를 구매하고 인텔리제이를 설치해서 DB Browser 플러그인으로 로컬 DB서버와 연결을 시도했다.

 

그런데 MySQL 서버 타임존 관련 문제로 커넥션에 문제가 생겼다. 

 

이를 해결하려면 타임존을 지정(Asia)으로 설정해줘야 한다. 나의 경우 SYSTEM으로 인식 중이다.

 

문제는 매번 Asia 타임존을 설정해줘야 한다는 것..

 

sql로 타임존 확인하는 코드

SELECT @@global.time_zone, @@session.time_zone; // 타임존 코드 확인 가능

SET global time_zone = "Asia/Seoul";
SET time_zone ="Asia/Seoul"; // 을 통해 setting이 가능하다. 해당 타임존을 모르는 경우 별도로 Mysql 사이트에서 제공하는 타임존을 입력하는 쿼리를 실행해야 한다.

 

문제점 : 이러한 설정을 DB 사용할 때마다 매번 수동으로 해야 하는 문제!

 

OS에서 MySQL을 시작할 때 TimeZone을 어디선가 참조할 수 있을 텐데

 

이를 찾아서 환경 변수로 기본 타임존 값을 Asia 시간으로 세팅해두면 좋을 것이다.

삽질 포인트

my.ini 파일을 찾아야 했다.

[ Mysql Server 8.0에 있다고 하는데 없어서 my.ini를 따로 관리자 권한으로 만들어주고 필요한 정보를 넣었다. ]

[mysqld]
default-time-zone='Asia/Seoul'

문제는 해당 my.ini 파일이 반영되지 않는다는 것이다...

 

해결 포인트

my.ini 가 존재하는 폴더가 따로 있었다.

 

mysql basedir에 존재한다고 하는데 msi 방식으로 설치한 경우 my.ini는 다른 폴더에 있다고 한다.

SHOW VARIABLES WHERE Variable_Name LIKE "%dir";

// 나의 결과 : 'basedir', 'C:\\\\Program Files\\\\MySQL\\\\MySQL Server 8.0\\\\'

 

문제점

.msi 인스톨러로 설치한 경우 MYSQL basedir이 아닌 %PROGRAMDATA” 디렉터리 하위에 만들어진다고 한다.

echo %PROGRAMDATA% // CMD 창에서 검색

해당 디렉터리로 이동해서 MySQL을 찾는다. 
해당 폴더에는 my.ini가 있는데 위에서 설정한 환경변수를 세팅해준다.

my.ini에 들어가서 위의 타임존 환경 설정 정보를 추가해준다.

 

서비스에 가서 재시작하면 타임존이 Asia로 시작된다는 것을 확인할 수 있다!

 

이로써 인텔리제이에서 Mysql 서버 연결 끝!

반응형