Timezone이란?
시간대는 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이, 다시 말해 지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다. 시간대는 협정 세계시를 기준으로 한 상대적인 차이로 나타낸다.
위키백과
영국이 기준으로 한국 표준시는 영국에서 부터(UTC+9) 9시간의 시차가 나타나게 됩니다.
처음 MySQL을 설치하면 Timezone 설정이 되어 있지 않아서 사용자가 타임존 설정을 해야 MySQL에 접속할 수 있습니다.
첫 번째 방법 - JDBC URL로 설정하기
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/example?serverTimezone=UTC"/>
<property name="username" value="example"/>
<property name="password" value="password"/>
</bean>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/example?serverTimezone=UTC"/>
URL 주소 뒤에 serverTimezone=UTC를 작성해서 MySQL에 접속할 때마다 타임존을 명시하는 방법이 있습니다.
두 번째 방법 - Timezone 테이블 추가
1. MySQL Command로 접속 후 mysql로 변경합니다.
mysql>use mysql;
2. 타임존에 테이블이 있는지 확인합니다.
mysql>SELECT @@global.time_zone, @@session.time_zone;
저는 타임존 설정을 해서 Asia/Seoul로 나왔지만 타임존 설정이 되어있지 않으면 Asia/Seoul이 나오지 않을 것입니다.
3. 링크로 접속 후 sql ZIP 파일을 다운로드합니다. (Non POSIX with leap seconds 로 받습니다.)
https://dev.mysql.com/downloads/timezones.html
4. 압축을 풀고 sql파일을 실행해 줍니다.
mysql>source 파일 위치 경로
5. my.ini 파일에 default-time-zone=Asia/Seoul 을 추가해 줍니다.
my.ini파일의 위치는 C:\ProgramData\MySQL\MySQL Server 8.0에 있습니다.
만약 ProgramData폴더가 보이지 않는다면 숨긴 항목을 표시하면 됩니다.
그래도 my.ini파일이 보이지 않는다면 쿼리로 검색해서 알 수 있습니다.
mysql> show variables where Variable_name like "%dir";
모든 설정을 하고 MySQL을 재시작해줍니다.