본문 바로가기

AWS 이용 기록 남기기

[RDS] MySQL 사용자 추가, 데이터 베이스 생성, 권한 부여~

728x90

지난 포스팅에서 AWS RDS를 이용해 MySQL 서버를 생성했습니다!

그럼 이제 모든 계정의 마스터 권한을 가진 root 계정 이외에

사용자를 추가하고! 특정 데이터 베이스에만 접근할 수 있도록 권한을 부여해 볼게요 ㅎㅎ

 

직접 MySQL을 설치한 인스턴스나 서버PC가 있다면 터미널 대부분 사용하시지만

저는 RDS MySQL를 외부접속만 하기 때문에! MySQL 워크벤치를 이용해볼게요 ㅎㅎ

지난 포스팅에서 워크벤치 대신 DBeaver를 사용하셨던 분들은 DBeaver쓰십면 됩니당!

 

자 그럼 우선 MySQL의 마스터 사용자로 접속을 해야합니다

우리가 지난번에 생성한 root 계정 세션을 열어줍니다!

이렇게 빈 쿼리창에 아래와 같이 입력하고 실행시켜줍니다(ctrl + enter)

use mysql;

먼저 현재 생성된 user를 확인해볼게요!

저는 유저별 접근 가능한 host, 유저명, 그리고 암호까지 조회해봤어요!

원래 암호를 저장하는 컬럼명은 password 였는데, 최신버전부터 authentication_string으로 변경되었답니다!

(정확히 5.7부터인지 8.0부터인지는 모르겠네요ㅠ)

 

그럼 이제 유저를 생성할 건데요!

유저를 생성하기 위한 기본 명령어는 아래와 같습니다!

create user 'userid(사용자입력)'

사용자가 원하는 옵션에 따라 사용자 아이디와 암호까지 함께 생성할 수도 있고,

외부접근에 대한 설정도 할수 있습니다!

저는 비밀번호 추가 외부접근까지 한번에 하려고 해요!

이렇게 입력해주고 실행해서 유저 아이디를 생성했습니다!

유저를 삭제하고 싶을땐 아래와 같이 해주시면 됩니다! 만약 유저 아이디가 master 라면,

drop user 'master';

다음은 해당 유저 아이디로 접근하여 사용할 데이터베이스를 생성해주어야 하는데요!

생성에 앞서 기존에 생성되어 있는 데이터베이스를 확인해볼게요!

 

기본적으로 생성되어있는 데이터베이스들이 보입니다 ㅎㅎ

저는 flo라는 앱을 클론코딩할건데, 보통은 DB서버도 dev용과 prod용을 분리하는 것이 일반적이지만!

앞선 포스팅에서 말씀드렸듯, 제게 이 클론코딩을 의뢰(?라기보단 과제를 부여)한 클라이언트의 요청으로

서버도 하나의 EC2에서 port만 나누기때문에 ! DB도 하나의 서버에 스키마를 달리해서 사용하려 합니다ㅎㅎ

그래서 저는 이렇게! 생성해주었습니다! 8.0버전(현재 설치 버전)에선 uf8의 alias가 변경되었다는 안내가 출력되지만 생성에는 지장이 없습니다!

데이터 베이스가 잘 생성되었는지 확인! 다시 아까 명령어로 확인해보면!

짠! 잘 생겼습니다!! ㅎㅎㅎㅎ

이번에도 마찬가지로 데이터베이스를 삭제하고 싶을땐!  아래와 같은 방식으로 입력해주세요!

dev_flo는 내가 삭제하고자 하는 DB명!

drop database dev_flo;

그러면 방금 생성한 유저에게 제가 해당 아이디로 접근할 데이터베이스에 대한 접근권한을 주어야 하는데요!

저는 flo 라고 생성했던 유저에게 dev_flo와 prod_flo 스키마에 한해서는 모든 권한 그리고 외부접속도 가능하게 해줄거에요!

권한 부여 명령어 GRANT 를 사용해 위와 같이 입력 후 실행해주었습니다!

참고로 아래와 같은 형식으로도 실행이 가능한데요!

GRANT ALL privileges ON dev_flo.* TO 'flo'@'%' identified by '비밀번호';

이때는 flo 계정의 비밀번호가 입력한 값으로 변경된다는 점 기억해두시면 될것같습니다!

참! 저는 모든 권한을 줄거라서 ALL privileges로 했지만!

grant [select, insert, update, delete] 이렇게 구체적으로 명시하여 원하는 기능만 줄수도 있답니다!!

**** 완전 중요한 것!!!!! 

 flush privileges;  

위 명령어를 꼭꼭꼭 실행해주셔야 부여한 권한이 적용된다는 것!!!!

지난번 포스팅에서 root 권한으로 접속했던 방법과 동일하게!

이번엔 방금 생성한 유저정보로 연결 성공!!

그리고 접속해보시면 

저는 flo 계정에는 dev_flo와 prod_flo 스키마에 대한 권한만 부여했기 때문에 

root 계정과 다르게 sys 스키마는 보이지 않는것을 확인하실 수 있네요!! 

그럼 오늘 포스팅 끝~~~!

다음 포스팅에서는 S3 서버 설정을 다뤄보려고 합니다!

728x90