MySQL의 시간대 바꾸기

  • Post author:
  • Post published:
  • Post category:칼럼
  • Post comments:0 Comments
  • Post last modified:

실제 환경과 개발 환경을 똑같이 맞추려고 로컬 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