[AWS] 개발용 RDS 구축하기 (3)

스윗포테이토·2022년 12월 6일
1

배스천 호스트(EC2)를 통한 RDS 접속

EC2에서 직접 RDS에 접속하려면 결국 또 EC2에 MariaDB를 깔아야 하는 것 같다. 따라서 MySQL Workbench를 사용하여 접속해보려고 한다.

[Database] > [Manage Connections] > [new]


1. 발급받은 EC2의 탄력적 IP
2. EC2 username
3. EC2 접속에 쓰이는 .pem key 저장 경로
4. RDS Endpoint - (예시) XXXXXXXXXX.ap-northeast-2.rds.amazonaws.com
5. RDS Port
6 & 7. RDS 생성시 입력한 계정 정보

[Test Connection]을 누르면 버전이 맞지 않는다는 경고가 나오는데 이건 MariaDB를 사용하기 때문에 뜨는 것 같다.
[Continue Anyway]를 클릭하면

연결 성공!

이후 [Connect to Database] > [새로 만든 connection]을 선택하면 workbench가 종료된다...ㅎ
MariaDB를 사용해서 인지 혹은 M1 문제인지 모르겠지만, 다시 켜면 정상적으로 연결된다.

테이블 생성 및 초기 데이터 입력

기존에는 테이블 생성과 초기 데이터 입력을 전부 .sql파일로 만들어 도커 컨테이너가 빌드될 때 실행되는 방식이었다.

테이블 생성

우선 Query 탭에서 Database를 선택해준다.

이후 파일 불러오기를 선택하면 .sql 파일을 불러올 수 있다.
테이블 생성은 무리 없이 되었는데, 트리거를 생성하는데서 오류가 떴다.

검색해보니까 트리거를 생성하려면 변수를 설정해야 한다고 한다.

show variables like '%log_bin%';


조회를 해보면 log_bin_trust_function_creators가 OFF로 떠 있는 것을 볼 수 있다.

set global log_bin_trust_function_creators=1;

1로 설정을 하려고 했는데, 이번에도 권한 오류가 떴다.

찾아보니 RDS 파라미터 설정을 직접 바꿔줘야 하는 것 같다.

[AWS RDS console] > [Parameter group]
직접 설정을 저장한 후


다시 조회해보니 변수 값이 바귄 것을 볼 수 있다.
이후 다시 트리거를 세팅하니 등록된 것을 확인해볼 수 있었다.

초기 데이터 입력

문제는 한글이 들어간 INSERT 문이 제대로 동작하지 않았다.
확인해보니 기본 characterset이 latin1으로 설정되어 있었다.

AWS RDS parameter group과는 연관이 없는 건가... 찾아보니 이건 직접 수정을 해야 하는 것 같았다.

ALTER DATABASE ATC_DB CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_unicode_ci';

실행 후 다시 확인해보니

적용이 되어 있었다.
그러나 이미 생성된 테이블의 character set은 전부 latin1으로 적용이 되어 있었다. 따라서 그냥 테이블을 다 지우고 새로 생성하기로 했다...

DROP TABLE table_name;

이후 INSERT문에서는 한글이 잘 입력되었다.

reference

AWS RDS - MySQL - Amazon 아마존 RDS (1)
MySQL 1419 error - "You do not have the SUPER privilege and binary logging is enabled" 해결 방법

profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

0개의 댓글