유저를 생성하고 권한을 제어할 수 있는 명렁어 이다.
대부분의 DB는 데이터 보호와 보안을 위해서 유저와 권한을 관리함.
개별 오브젝트에 대한 작업을 위해서는 오브젝트 권한 부여 필요
유저를 통해 DB에 접속하는 형태이다.
ID와 PW방식으로 인스턴스에 접속을 하고 그에 해당하는 스키마에 오브젝트 생성등의 권한을 부여받게 됨
인스턴스에 접속하기 위해 로그인이라는 것을 생성하게 되며, 인스턴스 내에 존재하는 다수의DB에 연결하여 작업하기 위해 유저를 생성한 후 로그인과 유저를 매핑해 주어야 한다.
Windows 인증 방식과 혼합 모드 방식이 존재한다.
사용자가 SQL문을 실행하기 위해 적절한 권한 부여
시스템 권한 관련 명령어는 DBA 권한이 있는 사용자만이 부여할 수 있으므로 SYSTEM 계정으로 접속해야 한다.모든 유저는 각각 자신이 생성한 테이블 외에 다른 유저의 테이블에 접근 하려면 해당 테이블에 대한 오브젝트 권한을 소유자로부터 부여받아야 한다.
scott 계정에 뷰를 생성할 수 있는 권한을 부여
GRANT CREATE VIEW TO scott;
scott 계정에 유저를 생성할 수 있는 권한으 ㄹ부여
GRANT CREATE USER TO scott;
scott 계정에 뷰를 생성할 수 있는 권한을 취소
REVOKE CREATE VIEW FROM scott;
scott 계정에 유저를 생성할 수 있는 권한을 취소
REVOKE CREATE USER FROM scott;
- 유저에게 알맞은 권한들을 한 번에 부여하기 위해 사용한다.
- ROLE을 생성하고, ROLE에 각종 권한들을 부여한 후, ROLE을 다른 ROLE 혹은 유저에 부여 ROLE을 만들어 사용하는 것이 권한을 직접 부여하는 것보다 빠르고 안전하게 관리할 수 있다
// 생성
CREATE ROLE LOGIN_TABLE;
// 권한 부여
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_TABLE;
// USER 준수에게 LOGIN_TABLE ROLE 이 가지고 있는 권한을 모두 부여
GRANT LOGIN_TABLE TO JUNSU;
유저를 삭제하는 명령어는 DROP USER 이고, CASCADE 옵션을 주면 해당 유저가 생성한 오브젝트를 먼저 삭제 후 유저를 삭제한다.
// USER 준수가 가지고 있는 모든 데이터 삭제
DROP USER JUNSU CASCADE;