DBMS

[DBMS] 6. 사용자 및 권한

katia 2023. 3. 23. 15:11

사용자

  • DBMS에서 사용자는 DBMS 서버에 접속하녀 일련의 작업을 하기 위한 주체이다.
  • 사용자의 구조는 아래와 같다.
    [사용자 이름]@[호스트]
    • 여기서 호스트는 해당 사용자 이름을 사용하여 접속할 수 있는 원격 호스트를 제한하기 위해 사용한다.
    • 사용자 이름이 같다 하더라도 호스트가 다르다면 이는 다른 사용자로 판단되며 이에 권한을 달리하여보다 안전한 데이터베이스 운용이 가능하다.

만들기

  • 계정을 만들기 위해서 아래와 같이 명령한다.
    CREATE USER [사용자 이름]@[호스트] IDENTIFIED BY '[비밀번호]';
    • 여기서 호스트 값은 위에서 설명한 것 처럼 원격 호스트를 제한하기 위해 사용된다. 만약, 원격 호스트를 제한하지 않기 위해서는 퍼센트(%)기호로 갈음한다.

조회하기

  • DBMS 상에 존재하는 사용자를 조회하기 위해 아래와 같이 명령한다.
    SELECT `user`, `host` FROM `mysql`.`user`;

수정하기

  • 사용자의 비밀번호를 수정하기 위해 아래와 같이 명령한다.
    ALTER USER `[사용자 이름]`@`[호스트]` IDENTIFIED BY '[새 비밀번호]';

삭제하기

  • 사용자를 삭제하기 위해 아래와 같이 사용한다.
    DROP USER `[사용자 이름]`@`[호스트]`;

권한

부여하기

  • 사용자에게 권항을 부여하기 위해 아래와 같이 명령한다.
    GRANT [부여할 권한, .... | ALL] ON `[[스키마].[테이블|*] | *.*]` TO `[사용자 이름]`.`[호스트]` [WITH GRANT OPTION]?;
    • 부여할 권한을 쉼표(,)로 구분하여 나열하여도 되나, 모든 권한을 언급하기 위해 ALL 이라는 키워드를 갈음할 수 있다.
    • 스키마 및 소속된 테이블에 대한 권한을 부여하여도 되나, 모든 스키마의 모든 테이블을 의미하기 위해 *.* 이라는 표현을 갈음할 수 있다.
    • 비록 모든 권한(ALL)을 부여하겠다 하더라도, GRANTREVOKE 등의 권한 관련 권한은 빠져있는데, 어떠한 사용자가 GRANTREVOKE를 할 수 있게 하기 위해 WITH GRANT OPTION 키워드를 추가한다.(권장)
    • 예시로, study@localhost 계정에 대해 모든 스키마의 모든 테이블에 대한 권한을 주기 위해 아래와 같이 명령한다.
      GRANT ALL ON *.* TO `study`@`localhost`;

철회하기

  • 부여된 권한을 철회하기 위해 아래와 같이 정의한다.
    REVOKE [철회할 권한, .... | ALL] ON `[[스키마].[테이블| * ]| *.*]` FROM `[상용자 이름]`.`[호스트]`;
    • 예로, study@localhost 사용자로 부터 DROPDELETE 권한을 철회하기 위해 아래와 같이 명령한다.
      REVOKE DROP, DELETE ON *.* FROM `study`@`localhost`;

조회하기

  • 현재 접속중인 사용자에게 부여되어있는 권한을 나열하기위해 아래와 같이 명령한다.
    SHOW GRANTS;
  • 다른 사용자에게 부여되어있는 권한을 나열하기 위해 아래와 같이 명령한다.
    SHOW GRANTS FOR `[사용자 이름]`@`[호스트]`;

'DBMS' 카테고리의 다른 글

[DBMS] 8. 테이블 및 열  (0) 2023.03.23
[DBMS] 7. 스키마  (0) 2023.03.23
[DBMS] 5. 개념  (0) 2023.03.23
[DBMS] 4. MariaDB 설치  (0) 2023.03.23
[DBMS] 3. 데이터베이스(Database) - part 2  (0) 2023.03.07