본문 바로가기
컴퓨터과학[3-2]/D.B

데이터베이스 설계 및 구현 - [제12강] 보안과 사용자 관리

by boolean 2016. 7. 31.
728x90

데이터베이스 설계 및 구현 - [제12강] 보안과 사용자 관리

MySQL의 권한 ․사용자 추가, 권한 변경 및 삭제 ․User and Privileges 메뉴 사용법

데이터베이스 용어정리

  • 권한 시스템
    서버의 접속과 SQL 및 각종 명령의 실행권한을 관리하는 체계
  • GRANT
    사용자를 추가하거나 권한을 부여할 때 사용되는 명령어
  • REVOKE
    사용자의 권한을 제거할 때 사용되는 명령어
  • 요점정리

    1. MySQL의 권한 시스템의 주요 기능은 MySQL 서버로의 접속권한 관리와 데이터베이스에서의 SQL 및 각종 명령의 실행권한을 관리하는 것으로 서버를 안정적으로 설정하여 다른 사람의 공격과 잘못된 사용을 막는다.
    2. MySQL 권한 시스템에서는 특정 사용자가 MySQL에 접속을 시도하면 우선 해당 사용자가 접근 가능한 사용자인지 알아보기 위해 사용자명, 비밀번호, 접속한 컴퓨터의 호스트명을 확인하고, 서버에 저장된 사용자명과 호스트명이 확인되면 해당 사용자의 비밀번호를 확인하여 접속을 허락한다.
    3. MySQL 서버는 SQL 문이나 기타 요청을 받으면, 요청한 사용자의 권한을 검사하여 실행해도 되는지 판단하고, 권한에 맞는 요청을 했다면 요청에 해당하는 작업을 실행한다.
    4. user 테이블은 MySQL 서버에 접속하기 위한 사용자명과 비밀번호 및 호스트명을 관리한다. 서버에 접속요청이 들어오면 MySQL은 user 테이블을 확인하여 사용자의 접속을 인증한다. 또한 user 테이블에는 다양한 컬럼들이 존재하는데, 서버 내의 전체 데이터베이스들에 대한 권한을 관리하고 있다.
    5. db 테이블은 사용자명을 검사하여 사용자가 어느 데이터베이스에 대하여 어떤 권한을 가지고 있는지를 정하는 데 사용된다. 사용자가 어떠한 작업을 요청하면 MySQL 서버는 먼저 user 테이블을 확인하여 사용자가 전체 데이터베이스에 대하여 요청에 대한 권한을 가지고 있는지 확인하고, 만약 권한이 없다면 db 테이블을 통하여 데이터베이스에 대하여 권한이 있는지 확인한다.
    6. MySQL 서버에서는 GRANT 문을 사용하여 사용자를 추가하고, 권한을 부여할 수 있으며, 특정 데이터베이스의 테이블의 컬럼에 대한 권한까지 상세히 설정할 수 있다. REVOKE 문은 사용자의 권한을 제거할 때 사용되며, 사용자를 완전히 삭제하고자 할 때는 MySQL의 user 테이블에서 DELETE 문을 사용하여 해당 사용자를 삭제해야 한다. 

    연습문제

    • 연습문제1

      사용자에 대한 권한관리 테이블의 이름은 무엇인가?

      답을 체크하세요
      정답 :
      MySQL은 모든 사용자와 관련된 정보를 ‘user’라는 이름의 테이블에서 관리한다. 사용자의 id, 패스워드 및 SELECT, INSERT 등의 명령어 대한 권한에 관련된 모든 정보를 ‘user’ 테이블에서 관리하며, 사용자 삭제 및 추가 또한 이 테이블을 직접 조작하여 처리한다.
    • 연습문제2

      사용자에 대한 테이블의 접근 권한은 어느 테이블에서 관리하는가?

      답을 체크하세요
      정답 :
      user에서는 명령어의 접근 권한만을 설정할 뿐, 테이블에 접근 권한은 관리하지 때문에 tables_priv라는 테이블을 사용한다. 또한 columns_priv에서는 더욱 세밀하게 테이블의 각 컬럼에 대한 접근 권한을 명시한다.
    • 연습문제3

      다음 중 사용자에게 권한을 부여할 때 사용하는 명령어는?

      답을 체크하세요
      정답 :
      사용자 추가 또는 권한을 부여할 때는 GRANT 명령어를 사용한다. 반대로 부여된 권한을 회수할 때는 REVOKE를 사용한다.
    • 연습문제4

      GRANT 명령어 사용 시, ‘knou 데이터베이스의 모든 테이블’을 지칭하기 위해 사용하는 표기법으로 올바른 것은?

      답을 체크하세요
      정답 :
      GRANT 명령어에서 특정 데이터베이스에 존재하는 테이블을 지칭하기 위해서 ‘데이터베이스명.테이블명’ 형식의 표기법을 사용한다. 모든 데이터베이스 또는 모든 테이블을 지칭할 때는 *를 대신 사용한다.
    • 연습문제5

      권한의 집합 단위로서 사용자 계정에 권한을 부여하기 위한 개념을 무엇이라고 하는가?

      답을 체크하세요
      정답 :
      사용자 권한 관리의 편의성을 위해 특정 수준별로 권한을 하나의 단위로 묶어 사용자에게 부여할 수 있는데 이러한 개념을 역할(role)이라고 한다. 

    댓글