ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] MySQL 계정 추가 및 접근권한 부여
    개발 프로세스/Cloud 2020. 9. 6. 19:18

    프로젝트에 필요한 계정을 생성하는 과정을 통해 MySQL 계정 관련 명령어를 정리하려한다. 진행 중인 프로젝트에서는 2가지 계정을 생성하였다. 하나는 DB 사용자 계정, 다른 하나는 DB 관리자 계정이다. 전자는 'team5_public'이란 ID를 부여할 것이며 데이터(투플) 수준에서 조회, 추가, 삭제, 수정할 수 있는 권한(DML)만 부여한다. 이 사용자 계정은 Workbench나 HeidiSQL과 같은 SQL 툴로 접속해 각자의 개발 작업에 맞게 데이터가 들어가는지 확인하는 용도이다. 후자에는 'team5_server'라는 ID를 부여할 것이며 데이터베이스에 대한 모든 권한을 부여할 것이다. 

     


    1. MySQL 계정 관련 DB로 이동

      terminal을 통한 DB 작업 시 중요한 것은 자신의 계정이 작업이 필요한 데이터베이스 안에 들어와 있어야 한다는 것이다. 다음 사진은 (1) 어떤 데이터베이스들이 있는지 조회해본 다음 (2) 계정 관련 DB로 이동하는 작업들을 스크린샷한 것이다.

     

     

     

     

     

       (1) 데이터베이스 조회

    show databases;

       MySQL에 만들어진 데이터베이스들을 모두 조회할 수 있다. 'mysql'이란 데이터베이스에 MySQL의 계정에 관한 정보들이 들어있다. 자신이 사용할 데이터베이스가 무엇인지 알고 있다면 생략해도 되는 명령어이다.

     

     

       (2) 사용할 데이터베이스에 접속

    use [DB 명];

       

     

    2. 계정 등록하기

    create user '사용자'@'localhost(또는 %)' identified by '비밀번호';

       사용자 : 사용할 계정아이디명

      

       localhost : 로컬(서버)에서만 접근가능

       % : 모든 아이피 허용

       172.1.% : 아이피가 172.1. 으로 시작되는 곳만 허용

     

       비밀번호 : 사용할 비밀번호. 모든 데이터베이스 권한을 부여하려는 계정에 대해서는 대소문자, 숫자, 특수문자 포함 8자 이상이어야 한다. (해당 규칙은 기본 비밀번호 정책이고, 자체적으로 수정이 가능하다)

     

     

     

    team5_public 계정, team5_server 계정을 모든 IP 위치에서 접속할 수 있도록 개방해두었다. 특히 team5_server 계정은 모든 권한을 부여할 것이기 때문에 8자 이상 긴 비밀번호를 두었다.

     

     

     

    3. 계정 삭제하기

    drop user '삭제할 ID'@'삭제할 ID에 허용했던 접근 위치';

     

     

    접근 위치를 잘못 부여한 계정이 있어서 'drop user' 쿼리를 통해 삭제하였다.

     

     

     

    4. 계정 권한설정

       (1) 모든 권한부여

    grant all privileges on *.* to '사용자'@'localhost';

       모든 권한을 부여하려는 계정은 계정의 비밀번호가 비밀번호 정책에 맞춰져 있어야 한다. 기준은 대소문자, 숫자, 특수문자 포함 8자 이상이다. 이 기준에 맞춰져 있지 않으면 "Your password does not satisfy the current policy requirements."라는 에러 메세지가 뜬다.

     

     

       (2) 특정 데이터베이스만 접근 부여

    grant all privileges on DB이름.* to '사용자'@'localhost';

     

       (3) 특정 DML만 허용

    grant select on DB이름.테이블명 to '사용자'@'localhost';

         특정 테이블에 대해 특정 명령어만을 허용할 수 있다. 해당 명령어처럼 실행하면 사용자 계정에 select 권한만 허용한다. 모든 DML에 대해 권한을 부여하고자 한다면 'select, update, delete, insert'라고 작성하면 된다.

     

     

     

    team5_public 계정은 사용자를 위한 것이므로 간단한 테이블 조회, 수정 정도 할 수 있는 DML에 대해서만 권한을 제한하였고, 관리자 계정인 team5_server에 대해서는 모든 권한을 부여하였다.

     

     

     

    4. 계정 권한 삭제

    revoke all on DB이름.* from '사용자'@'localhost';

     

    5. 계정 권한 확인하기

    show grants for '사용자명'@'localhost';

     

     

    6. 설정 갱신하기

    flush privileges;

       작업 내용을 저장한 환경으로 갱신한다.

     

     

     

    7. 등록된 계정 확인

    SELECT host,user,authentication_string FROM user;

       계정이 잘 등록되었는지 확인할 수 있다.

     

     

     

    계정을 새로 생성하기 전에는 root 계정만 존재하는 것을 확인할 수 있다.

     

     

     

     

    계정을 생성한 후 team5_public, team5_server 계정이 정상적으로 생성된 것을 확인할 수 있다.

     

     

    댓글

Designed by Tistory.