MySQL의 시간대 바꾸기

  • Post author:
  • Post category:칼럼
  • Post comments:0 Comments
  • Post last modified:February 8, 2020

실제 환경과 개발 환경을 똑같이 맞추려고 로컬 MySQL의 시간대를 UTC로 바꾸기로 결정했다. 그다지 어렵지는 않지만 삽질하기 좋은 부분도 있어 정리한다.

  1. mysql 서버의 현재 시간대를 확인한다. mysql 데이터베이스에 접속해서

    select @@global.time_zone, @@session.time_zone;
    

    아마 결과가 Asia/Seoul 일 것이다. UTC가 아닌 지역 시간대를 사용 중이라는 뜻이다. 그렇다면 시간대를 바꿔야지.

  2. 다시 mysql 데이터베이스에 타임존(timezone) 데이터가 있는지 확인한다.

     select b.name, a.time_zone_id  from mysql.time_zone a, mysql.time_zone_name b where a.time_zone_id = b.time_zone_id and b.name like \'%UTC%\';
    

    이 쿼리를 날리면

    Etc/UTC 402
    UTC 563
    posix/Etc/UTC   969
    posix/UTC   1130
    right/Etc/UTC   1537
    right/UTC   1698
    

    이런 값이 나와야 한다. 하지만 십중팔구 안 나올 것이다. 이럴 때는 mysql 데이터베이스에 타임존 정보를 넣어야 한다.

  3. 타임존 정보를 넣으려면 mysqld 서버를 띄우고 터미널에서 아래와 같이 명령어를 친다.

    shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
    

    그러고 나서 다시 타임존 정보가 나오는지 확인한다. 나오겠지.

  4. 이제 my.cnf 파일을 열고 아래와 같이 기본 시간대를 명시적으로 지정한다.

    default-time-zone=\'utc\'
    
  5. mysqld 를 죽였다 다시 살린다. 그러고 나서 아래와 같이 쿼리를 날려보자.

    select now();
    

    UTC 시각이 나오는지 현재 서울 시각이 나오는지 확인한다. UTC에 맞춰 나온다면 끝!

참고 문헌

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments