개발로 자기계발
article thumbnail
728x90

Date 필드의 기본값을 현재 시간으로 하려고 한다면 CURRENT_TIMESTAMP로 많이 쓰인다.
다만 다른 설정을 해주지 않으면 한국시간보다 -9시간으로 글로벌 시간이 지정되어있다.

참고 - https://shwjdqls.github.io/aws-mysql-timezone-encoding/

 

Time_zone 변경

이 명령문을 Workbench나 터미널에서 MySQL Shell에 접속해서 치게 되면 현재 Time_zone 설정을 볼 수 있다.

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

 

UTC기준으로 Time_zone이 설정되어 있었고, 나는 Asia/Seoul로 변경하고 싶었다.

SET time_zone='Asia/Seoul';

SET GLOBAL time_zone='Asia/Seoul';

 

이 SQL문으로 변경이 가능하지만 GLOBAL을 실행한 순간

 

에러 발생

이러한 에러가 발생했다...

16:01:41	SET GLOBAL time_zone='Asia/Seoul'
Error Code: 1227. Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation	0.091 sec

 

원인 분석

AWS RDS의 경우, 데이터베이스 인스턴스를 사용자가 직접 관리하지 않기 때문에 일부 설정은 RDS 관리 콘솔이나 AWS CLI를 통해서만 변경할 수 있다. 이러한 제한은 AWS에서 데이터베이스 인스턴스의 안정성과 성능을 보장하기 위한 것이다.

또한,  데이터베이스에서 한글을 사용하려면 인코딩 설정이 필요하다.

 

빠르게 정리하자면, AWS RDS에서 타임존 설정과 한글 인코딩 설정을 변경하려면 파라미터 그룹을 사용하여 데이터베이스 인스턴스의 설정을 변경해야 한다. 이렇게 함으로써 데이터베이스 인스턴스의 안정성과 성능을 보장할 수 있기 때문이다.

 

설정 방법

기본적으로 설정되어 있는 파라미터 그룹으로도 괜찮지만, 프로젝트에 해당하는 파라미터 그룹을 생성해 줬다.

밑에 내용을 순서대로 진행하면 된다.

 

1) 공통 사항(참고 사이트에 정리해준 걸 가져왔다.)

- RDS 화면 -> 왼쪽 메뉴 파라미터 그룹 클릭 -> 파라미터 그룹 생성 -> 그룹 이름 지정 후 생성
- 파라미터 선택 -> 파라미터 편집 -> 파라미터 필터에 정보 검색

 

2) Time_zone 변경
- time_zone: Asia/Seoul

 

3) 인코딩 설정


MySQL의 경우, 일반적으로 utf8mb4 문자 집합과 utf8mb4_unicode_ci 정렬 순서를 사용하여 한글을 지원한다.
이 설정은 한글뿐만 아니라 다른 유니코드 문자도 올바르게 처리할 수 있게 해 준다.
현재는 일부 4바이트 유니코드 문자(예: 이모티콘)를 처리할 필요가 없기 때문에 utf8_general_ci로 설정

- character_set_client: utf8

- character_set_connection: utf8
- character_set_database: utf8
- character_set_filesystem: utf8
- character_set_results: utf8
- character_set_server: utf8
- collation_connection: utf8_general_ci
- collation_server: utf8_general_ci

 

결과

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)