시작
회사 신입과제를 할 때, 의외로 TimeZone에서 많은 시간을 보냈습니다. 회사 코드, DB에는 설정을 하고 계속 개발을 시작하였지만, 제가 정리하는 개인 프로젝트에는 설정이 안되어있기에 설정을 하려고 합니다.
UTC(Coordinated Universal Time:세계 협정시)는 예전의 GMT(Greenwich Mean Time)가 표준화 된 것입니다. KST(대한민국)는 UTC +9:00 인 값입니다.
이제 해야할 것은 Intellij에서 JDBC URL의 ServiceTimeZone과 Mysql DB 서버와 TimeZone을 일치시켜 UTC가 아닌 KST로 수정하려합니다.
Intellij 설정
DB를 연결하는 yml 에서 Timezone을 수정합니다.
url: jdbc:mysql://localhost:3306/basic?serverTimezone=UTC&characterEncoding=UTF-8
기존에 Timezone이 UTC 였다면,
url: jdbc:mysql://localhost:3306/basic?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
Asia / Seoul 로 변경해줍니다.
MySQL Asia/Seoul Set
만약 JDBC URL만 KST로 수정하고 MySQL에는 UTC로 그대로 냅두면, 계속 UTC로 남아있거나, 에러가 났을 겁니다. 그 부분을 방지하고자 같이 동기화를 시켜줍니다.
![](https://images.velog.io/images/ggomjae/post/39a22014-2501-4d18-9656-0a067ebd3e77/image.png)
Mysql WorkBench를 이용합니다. 우선 사진과 같이 현재 global.time_zone 과 session.time_zone을 확인합니다. 설정이 아닌 default 값으로 SYSTEM 으로 설정이 되어있습니다. 그럼 Set을 통해 변경해보겠습니다.
![](https://images.velog.io/images/ggomjae/post/fa701b6f-fcc9-4905-98eb-e9ae4d9e4b25/image.png)
여기서 만약 에러가 아닌 곧바로 셋팅이 된다면, 끝난거지만 보편적으로는 안될겁니다.
그 다음 단계는 Asia/Seoul을 셋팅하기위해 URL에 접속합니다. https://dev.mysql.com/downloads/timezones.html
![](https://images.velog.io/images/ggomjae/post/2340faf0-24cf-4996-bea0-82d1e18f4270/image.png)
![](https://images.velog.io/images/ggomjae/post/9d00f39c-fabc-4c45-85db-2ab5ac42ce83/image.png)
다운로드 후, 클릭을 하면 사진과 같은 압출 풀기가 나오고 더블클릭 후, Mysql Bench를 곧바로 열어주면 됩니다.
![](https://images.velog.io/images/ggomjae/post/919f2636-ff32-4f24-9315-39cda1aa4d00/image.png)
use mysql를 우선적으로 실행을 시킵니다. 만약 mysql Cli인 경우 password를 치면 곧바로 복붙하면 됩니다.
![](https://images.velog.io/images/ggomjae/post/286a9916-22a8-4cb3-be84-83615f02a00d/image.png)
이제 마지막 단계입니다. 아까와는 다르게 TimeZone이 설정이 잘됩니다.
Mysql Server my.ini 설정
C:\ProgramData\MySQL\MySQL Server 8.0
해당 경로를 찾아들어가서 my.ini를 찾고 설정을 해줍니다. txt 마지막 줄에
default-time-zone=Asia/Seoul
를 추가해주시면 됩니다. 하지만 분명히 경고창이 뜰겁니다.
![](https://images.velog.io/images/ggomjae/post/dcd0c5fb-959f-489c-a87e-2d45c3176495/image.png)
my.ini의 오른쪽 마우스 클릭을 하고 보안 탭에 들어가서 권한을 변경해줍니다. 그리고 다시한번 변경해주면 됩니다.
서버 재구동
![](https://images.velog.io/images/ggomjae/post/b2e72390-bd61-44ca-97c5-b0f9eab9be4c/image.png)
밑에 '검색하려면 여기에 입력하시오.' 부분에 서비스을 입력하여 서비스를 실행시키고 MySQL80을 찾아 서버 재구동을 시킵니다.
결과
다시 한번 TimeZone을 확인하면 짜잔! 제대로 나오는 것을 볼수있습니다.