Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 시간대(Timezone) 변경 방법 총정리 - 세션 및 전역 설정 가이드

MySQL에서 시간대(timezone)를 변경하는 작업은 서버 운영이나 데이터 정합성 관리에 있어 매우 중요합니다. MySQL은 SET 명령어를 사용해 시간대를 손쉽게 변경할 수 있으며, 세션 단위와 전역(Global) 단위 두 가지 방식으로 적용할 수 있습니다.

1. MySQL 시간대 변경 기본 문법

시간대를 변경하는 기본적인 문법은 다음과 같습니다.

SET time_zone = '값';

여기서 '값'에는 '+8:00'과 같은 UTC 오프셋 형식 또는 'Asia/Seoul'과 같은 명명된 시간대(named time zone) 형식을 사용할 수 있습니다.

2. 세션(Session) 단위 시간대 변경

현재 접속한 세션에만 시간대를 적용하려면 아래와 같이 실행합니다.

mysql> SET time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)

위 예제는 시간대를 UTC보다 8시간 빠른 값으로 변경한 것입니다. 이 설정은 해당 세션(접속)이 종료되면 자동으로 해제되며, 다른 세션에는 영향을 주지 않습니다.

현재 시간대 확인하기

변경 전후의 시간대 값을 확인하려면 아래 쿼리를 사용하면 됩니다.

mysql> SELECT @@global.time_zone, @@session.time_zone;

3. 전역(Global) 시간대 변경

서버 전체에 시간대를 적용하려면 GLOBAL 키워드를 함께 사용합니다. 기본 문법은 다음과 같습니다.

SET GLOBAL time_zone = '값';

실제 적용 예시는 아래와 같습니다.

mysql> SET GLOBAL time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)

위 쿼리를 실행하면 이후 새로 연결되는 모든 세션에 해당 시간대가 적용됩니다. 단, 이미 연결되어 있는 기존 세션에는 영향을 주지 않으므로 주의가 필요합니다.

4. 참고 사항

  • 영구 적용: SET GLOBAL로 변경한 값은 MySQL 서버 재시작 시 초기화됩니다. 영구적으로 유지하려면 설정 파일(my.cnf 또는 my.ini)의 [mysqld] 섹션에 default-time-zone = '+09:00'과 같이 추가해야 합니다.
  • 명명된 시간대 사용: 'Asia/Seoul'처럼 지역 이름 기반 시간대를 사용하려면 mysql 데이터베이스에 타임존 테이블이 로드되어 있어야 합니다.
  • 권한: 전역 시간대 변경에는 SYSTEM_VARIABLES_ADMIN 권한(또는 SUPER 권한)이 필요합니다.

이처럼 MySQL의 시간대 변경은 간단한 SET 명령어로 처리할 수 있으며, 용도에 따라 세션 단위와 전역 단위를 구분하여 사용하는 것이 좋습니다.