JooTC
mysql-incorrect-data-timezone-1

MySQL(MariaDB) 서버 타임존 변경 및 확인

MySQL(MariaDB) 서버 타임존 변경 및 확인


MySQL 또는 MariaDB를 사용하여 데이터를 삽입할 때, 타임스탬프(TimeStamp)의 값이 엉뚱하게 입력되는 경우가 생길 때가 있습니다.

mysql-incorrect-data-timezone-1

데이터 상의 시간으로만 보았을 때는 문제가 없어 보이지만, 사실 저 데이터가 삽입된 실제 시간이 위 시간들과 몇시간 정도 차이가 나고 있었습니다.

이는 현재 데이터베이스의 시간대가 한국 시간대와 다르게 설정되어 있어 시간 상의 오류가 생긴 것처럼 보이는 것입니다.

 

데이터베이스 서버 타임존 확인

다음 SQL 쿼리문을 사용하여 서버 변수를 통한 현재 서버의 타임존을 확인할 수 있습니다.

  • @@global.time_zone : 데이터베이스 서버의 타임존
  • @@session.time_zone : 현재 연결된 세션의 타임존
SELECT @@global.time_zone, @@session.time_zone;

mysql-incorrect-data-timezone-3

쿼리를 실행하면 현재 시간대와 세션의 시간대가 UTC임을 알 수 있습니다.

 

 

데이터베이스 서버 타임존 변경

서버의 타임존 변경을 위해서는 MySQL/MariaDB 데이터베이스 설정 파일을 열어주어야 합니다. 이는 서버상에서 작업하는 내용이므로 서버 원격 접속 권한을 가지고 있어야 합니다.

리눅스 OS 기준 일반적으로 /etc/my.cnf 파일이나 /etc/my.cnf.d/server.cnf 파일을 사용합니다. 이 파일을 열어 [mysqld] 항목을 찾아 아래에 다음과 같이 입력합니다.

[mysqld]
default-time-zone='+9:00'

default-time-zone+9시간이므로 이는 KST 시간대인 대한민국의 시간을 표시합니다. 여기서 주의할 점은 09:00이나 +9만 입력해서는 안됩니다.

다시 UTC 시간대로 되돌리고 싶다면 다음과 같이 사용합니다.

  • default-time-zone='+0:00'
  • default-time-zone='-0:00'

 

설정 값을 변경한 후 MySQL 또는 MariaDB 서비스를 재시작해야합니다. (서비스 이름이 간혹 mysqld 가 아닌 mysqlmysql80 등인 경우가 있습니다.)

[root@localhost ~]# service mysqld restart

systemd 환경의 OS에서는 다음 명령어도 사용 가능합니다.

[root@localhost ~]# systemctl restart mysqld

 

구독
알림
guest

7 Comments
Inline Feedbacks
모든 댓글 보기
7
0
이 포스트에 대한 의견을 남겨주세요!x