EC2 RDS 연결 및 특정 DB 사용자 생성

Jang990·2023년 6월 30일
0

EC2와 RDS는 이미 생성되어 있고 보안 그룹 설정을 통해 서로 연결되어 있다고 가정합니다.

해당 글에서는 EC2에서 RDS에 연결하고, 특정 DB만을 사용할 사용자를 어떻게 생성해야 하는지 알아봅니다.

EC2 MySQL Client 설치

사진과 같이 Amazon Linux 2를 사용하는 경우

sudo yum install mariadb

그 위에 Amazon Linux 2023를 사용하는 경우

sudo dnf install mariadb105

다른 버전은 참고: https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html

MySQL Client 설치 확인

mysql --version

Root로 RDS 접속

mysql -h RDS-엔드포인트 -P 포트 -u 이름 -p

예시
mysql -h RDS.임시.주소.rds.amazonaws.com -P 3306 -u root -p

접속해서 RDS 초기 생성시에 입력한 password 입력.

RDS에 존재하는 DB 확인 및 생성

-- 존재하는 database 확인
show databases;
create database testdb;

testdb라는 DB를 생성해서 특정 사용자들이 해당 DB에서 작업할 수 있도록 사용자를 만들 것입니다.

특정 DB를 사용할 사용자 생성

MySQL 5.7버전까지는 GRANT 명령으로 권한의 부여와 동시에 계정 생성이 가능했습니다.
하지만 MySQL 8.0 버전 부터는 계정 생성은 CREATE USER 명령으로, 권한 부여는 GRANT 명령으로 구분해서 실행하도록 바뀌었습니다.

CREATE USER 'USER-아이디'@'%' identified with mysql_native_password by 'USER-비밀번호';
GRANT ALL privileges on 접근할-DB.* TO 'CREATE로-만든-USER-아이디'@'%';

'USER-아이디'@'%': EC2로 원격으로 접속하기 때문에 %로 설정한다.


with mysql_native_password: MySQL 5.7버전 까지는 Native Authentication이 기본 인증 방식이다. 하지만 MySQL 8.0 버전부터는 Caching SHA-2 Authentication이 기본 방식으로 변경되었다. 기존 5.7버전의 클라이언트에서 요청을 하면 오류가 발생할 수 있다. 그렇기 때문에 Native Authentication 방식으로 인증하도록 생성해준다.


이 부분과 관련된 문제는 다음글 참고
https://ynzu-dev.tistory.com/entry/MySQL-Authentication-plugin-cachingsha2password-cannot-be-loaded

-- 예시
-- testuser = 계정 ID + 비밀번호, 
-- testdb = 접근 권한을 줄 db
create user 'testuser'@'%' identified with mysql_native_password by 'testuser';
GRANT ALL privileges on testdb.* TO 'testuser'@'%';

생성한 계정으로 접속

mysql -h RDS.임시.주소.rds.amazonaws.com -P 3306 -u testuser -p

생성하면서 설정한 password 입력

show databases;

해당 명령어을 입력하면 접근할 수 있는 database만 보인다.

참고

https://damduc.tistory.com/4
Real MySQL 8.0 (1권)

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글