시스템 권한 관리
시스템 권한은 데이터베이스 관리자가 부여하는 것으로 테이블 생성, 삭제, 유저 계정 생성 등의 권한이다. 즉 데이터 정의어(DDL)과 관련된 권한이라 생각하면 편하다.
- 시스템 권한 부여
GRANT system_privilege TO user_name;
여기서 system_privilege
는 앞서 말한 시스템 권한으로 CREATE TABLE
이나 CREATE VIEW
등이 있다.
- 시스템 권한 취소
REVOKE system_privilege FROM user_name;
객체 권한 관리
- 객체 권한 부여
GRANT privilege ON object_name TO user_name [WITH GRANT OPTION];
부여 가능한 주요 권한으로는 INSERT
, DELETE
, UPDATE
, SELECT
, REFERENCES
등이 있다. UPDATE
나 SELECT
는 테이블의 일부 속성에 대한 권한 부여도 가능하다. 참고로 여러 권한을 한 번에 부여하는 것도 가능하다.
기본적으로 GRANT
문으로 부여받는 권한은 다른 사용자에게 부여할 수 없다. 만약 부여하고 싶다면 WITH GRANT OPTION
을 이용하여 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있도록 하면 된다
만약 모든 사용자에게 똑같이 권한을 부여하고 싶다면 사용자 이름에 PUBLIC
키워드를 사용하면 된다.
- 객체 권한 취소
REVOKE privilege ON object_name FROM user_name CASCADE | RESTRICT;
CASCADE
와 RESTRICT
는 연쇄적으로 권한이 부여되어 있어 한 사용자의 권한을 취소함으로써 다른 사용자에게까지 영향이 미칠 때 사용되는 옵션이다. 예를 들어서 사용자 A가 사용자 B에서 권한을 부여하고, 사용자 B가 사용자 C에게 권한을 부여한 상황에서 사용자 B의 권한을 취소하려 할 때 CASCADE
로 지정하면 C의 권한 역시 취소되게 된다. 그러나 RESTRICT
로 설정하면 종속 관계를 감지하고 거부한다.
역할 권한 관리
사용자가 많아진다면 개별 사용자에게 권한을 부여하는 것보다 특정 역할을 만들고 역할에 맞는 권한을 부여하여 관리하는 것이 더 수월하다.
- 역할 생성
CREATE ROLE role_name;
- 역할 부여
GRANT role_name TO user_name;
- 역할 취소
REVOKE role_name FROM user_name;
- 역할 제거
DROP ROLE role_name;
- 역할 권한 추가 및 취소
시스템 권한 부여 및 취소와 객체 권한 부여 및 취소에서 user_name
부분을 role_name
으로 바꾸면 된다.
'Language > SQL' 카테고리의 다른 글
[SQL] 인덱스 생성 및 삭제 (0) | 2025.06.02 |
---|---|
[SQL] 간단한 내장 SQL(ESQL, embedded SQL) 소개 (0) | 2025.05.14 |
[SQL] 뷰(view) 생성, 수정, 삭제 (0) | 2025.05.14 |
[MySQL] 주요 내장함수 (0) | 2025.05.13 |
[SQL] 데이터 조인(join) (0) | 2025.05.13 |