[mysql] 타임존 확인 및 변경

여리·2024년 2월 19일
0

mysql에서는 대표적으로 두가지의 타임 데이터 타입을 갖고 있다

종류는 두개 : timestamp, datetime 두개의 타입 외에 한국기준으로 mysql에는 기본적으로 timezone을 설정하는데에 차이가 있다.

바로, UTC(세계 협정시)KST(한국 표준시)

UTC는 GMT(그리니치 평균시)와 비슷하지만 기술적으로는 UTC를 사용한다.(UTC와 GMT는 소수점으로 조금 차이가 있긴 하다.)

KST는 한국표준시로 한국에서 정한 표준시간이다.

아래의 mysql 명령어를 통해서 time_zone이 어떻게 설정되어있는지 확인할 수 있다.

SELECT @@global.time_zone, @@session.time_zone,@@system_time_zone;

아래 명령문 설명

위 SQL 쿼리는 MySQL 서버의 전역(global), 세션(session), 시스템(system) 타임존 설정을 조회.

  • @@global.time_zone: MySQL 서버의 전역 타임존 설정. 이는 MySQL 서버 전체에 영향을 미치며, 서버가 시작될 때 설정.
  • @@session.time_zone: 현재 세션(클라이언트와의 연결)의 타임존 설정. 각 클라이언트 세션은 자체적으로 타임존을 설정할 수 있다.
  • @@system_time_zone: MySQL 시스템 타임존 설정. 이는 시스템의 기본 타임존 설정을 나타낸다.

추가참고 : 아래 명령문은 현재 설정되어있는 timezone과 현재 시간을 알 수 있는 방법의 명령문

SELECT @@time_zone, now();

별도의 타임존 설정을 하지 않았다면 위와 같이 나타날 것이다.
SYSTEM은 서버 시스템 시간을 타임존으로 사용하고 있다는 뜻이다.
한국시간으로 변경하고 싶다면 UTC에서 +9시간을 하거나 timezone을 Asia/Seoul로 변경하여야 한다.

변경 방법은 여러 가지가 있다.
그중에 하나의 방법.

mysqld.cnf 파일에서 default 타임존 설정

  • 이 방법을 이용하면 mysql을 재시작하더라도 타임존을 그대로 유지할 수 있다.

① 터미널로 접속하여 아래와 같은 명령어로 mysqld.cnf 파일에 접근한다.

(sudo로 접근해야 한다. 아닐 경우 readonly 파일이기에 수정이 불가능...)

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

② 아래의 코드를 파일 맨 밑에 추가한다.
UTC기준으로 한국시간이 +9:00이므로 아래와 같이 작성, 다른 시간대를 원할 경우 해당 시간차로 작성한다.

(오타가 발생할 경우, mysql 재시작이 되지 않으니 주의!!)

default-time-zone="+09:00"

③ mysql을 재시작한다.

sudo service mysql restart

▶혹시 아래와 같이 에러가 발생한다면, error.log를 확인하자 (나의 경우는 mysqld.cnf 수정할 때 만든 오타 때문이었다..)

에러 로그는 cat /var/log/mysql/error.log 여기서 확인

④ mysql 타임존 다시 확인

UTC 기준으로 +9:00 된 것을 확인할 수 있다.

profile
beckend developer

0개의 댓글