Mysql version 8.0 사용 |
Mysql에서 타임스탬프 필드를 사용하다 보면 데이터 입력 시간에서 문제가 발생하는 경우가 있다.
mysql 타임존이 보통 UTC (그리니치 천문대가 있는 곳의 시간)으로 설정되어 있어
KST와 9시간 정도 차이가 있기 때문에 발생하는 문제다.
이에 한국시간으로 타임존 변경이 필요하다.
현재 타임존 확인하기
sudo mysql -u root -p # 터미널에서 mysql 실행 코드
select @@global.time_zone, @@session.time_zone,@@system_time_zone;
별도의 타임존 설정을 하지 않았다면 위와 같이 나타날 것이다.
SYSTEM은 서버 시스템 시간을 타임존으로 사용하고 있다는 뜻이다.
이에 변경이 필요하다.
한국시간으로 변경하고 싶다면 UTC에서 +9시간을 하거나 timezone을 Asia/Seoul로 변경하여야 한다.
변경 방법은 여러 가지가 있다.
1. mysqld.cnf 파일에서 default 타임존 설정
- 이 방법을 이용하면 mysql을 재시작하더라도 타임존을 그대로 유지할 수 있다.
① 터미널로 접속하여 아래와 같은 명령어로 mysqld.cnf 파일에 접근한다.
(sudo로 접근해야 한다. 아닐 경우 readonly 파일이기에 수정이 불가능...)
sudo vim /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 된 것을 확인할 수 있다.
+ 현재 시간 확인 sql 쿼리
select now();
'WEB > DB' 카테고리의 다른 글
MariaDB 설치 + workbench 연결 for MAC (0) | 2022.03.26 |
---|---|
SQL injection (+ Mybatis 방어) (0) | 2021.05.04 |