1. DCL 개요
2. 유저와 권한
3. ROLE을 이용한 권한 부여
* Oracle
SQL> show user
USER is "SCOTT"
SQL> create user pjs identified by korea7 ;
create user pjs identified by korea7
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn /as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> grant create user to scott ;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> show user
USER is "SCOTT"
SQL> create user pjs identified by korea7 ;
User created.
SQL> conn pjs/korea7 << 유저 생성했다고 해서 바로 접속 할수 없다. 접속을 위한 권한 부여 필요
ERROR:
ORA-01045: user PJS lacks CREATE SESSION privilege; logon denied
SQL> conn / as sysdba
Connected.
SQL> grant create session to scott with admin option ;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> grant create session to pjs ;
Grant succeeded.
SQL> conn pjs/korea7 << 드뎌 접속 성능
Connected.
SQL>
SQL> select * from tab ;
no rows selected
SQL> create table menu ( menu_seq number not null, title varchar2(10)) ; << 접속 됐다고 테이블을 생성할 수 있는건 아니다.
create table menu ( menu_seq number not null, title varchar2(10))
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn /as sysdba
Connected.
SQL> grant create table to pjs ;
Grant succeeded.
SQL> conn pjs/korea7
Connected.
SQL> create table menu ( menu_seq number not null, title varchar2(10)) ; << 드뎌 테이블 생성
Table created.
SQL> conn scott/tiger
Connected.
SQL> select * from pjs.menu ;
select * from pjs.menu
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> conn pjs/korea7
Connected.
SQL> insert into menu values(1, 'Fighting');
insert into menu values(1, 'Fighting')
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'
SQL> show user ;
USER is "PJS"
SQL> conn / as sysdba
Connected.
SQL> alter user pjs quota 100M on users ;
User altered.
SQL> conn pjs/korea7
Connected.
SQL> insert into menu values(1, 'Fighting');
1 row created.
SQL> commit ;
Commit complete.
SQL> grant select on menu to scott ; << 조회(SELECT) 권한 부여
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> select * from pjs.menu ; << 드뎌 조회 가능
MENU_SEQ TITLE
------------ ----------
1 Fighting
SQL> update pjs.menu set title ='KKK' where menu_seq = 1 ; << 업데이트 시도 - 실패 ( 권한 부족 )
update pjs.menu set title ='KKK' where menu_seq = 1
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL>CONN SYSTEM/MANAGER;
연결되었다.
REVOKE CREATE SESSION, CREATE TABLE FROM PJS ;
권한이 취소되었다.
CONN PJS/KOREA7
ERROR: 사용자 PJS은 CREATE SESSION 권한을 가지고 있지 않음, 로그온이 거절되었다.
CONN SYSTEM/MANAGER
연결되었다.
CREATE ROLE LOGIN_TABLE
롤이 생성되었다.
GRANT CREATE SESSION, CREATE TABLE TO LOGIN_tABLE ;
권한이 부여되었다.
GRANT LOGIN_tABLE TO PJS ;
CONN PJS/KOREA7
연결되었다.
CREATE TABLE MENU2 ( MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10)) ;
테이블이 생성되었다.
CONN SYSTEM/MANAGER
연결되었다.
DROP USER PJS CASCADE ;
사용자가 삭제되었다.
--> PJS 유저가 만든 MENU 테이블도 같이 삭제되었다.
CREATE USER PJS IDENTIFIED BY KOREA7;
사용자가 생성되었다.
GRANT CONNECT, RESOURCE TO PJS ;
권한이 부여되었다.
CONN PJS/KOREA7;
연결되었다.
CREATE TABLE MENU (MENU_SEQ NUMBER NOT NULL, TITLE VARCHAR2(10)) ;
테이블이 생성되었다.