MySQL(MariaDB) 서버 타임존 변경 및 확인
MySQL 또는 MariaDB를 사용하여 데이터를 삽입할 때, 타임스탬프(TimeStamp)의 값이 엉뚱하게 입력되는 경우가 생길 때가 있습니다.
데이터 상의 시간으로만 보았을 때는 문제가 없어 보이지만, 사실 저 데이터가 삽입된 실제 시간이 위 시간들과 몇시간 정도 차이가 나고 있었습니다.
이는 현재 데이터베이스의 시간대가 한국 시간대와 다르게 설정되어 있어 시간 상의 오류가 생긴 것처럼 보이는 것입니다.
데이터베이스 서버 타임존 확인
다음 SQL 쿼리문을 사용하여 서버 변수를 통한 현재 서버의 타임존을 확인할 수 있습니다.
- @@global.time_zone : 데이터베이스 서버의 타임존
- @@session.time_zone : 현재 연결된 세션의 타임존
SELECT @@global.time_zone, @@session.time_zone;
쿼리를 실행하면 현재 시간대와 세션의 시간대가 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
가 아닌 mysql
, mysql80
등인 경우가 있습니다.)
[root@localhost ~]# service mysqld restart
systemd
환경의 OS에서는 다음 명령어도 사용 가능합니다.
[root@localhost ~]# systemctl restart mysqld
뭐 대단한거라고 복사방지 걸었는지 이해 불가
소스코드/쿼리문은 복사하실 수 있습니다. 포스트를 무단 도용하시는 분들이 많아서 조치하였습니다. 양해 부탁드립니다.
대단한 것도 아니라면서 왜 복사하려고 함?
이런 인간들 이해 불가
아 과제로 복붙해야하는데 귀찮자너~
지이랄도 병이에요 ㅎㅎㅎㅎㅎㅎ
혹시 개발자도구 / 우클릭 막는거 어떻게하셨나요? JS 키이벤트로 막으셨나요?
안녕하세요. 제가 따로 구현한건 아니고 블로그 내 외부 플러그인을 사용하였습니다. 감사합니다.