본문 바로가기

Programing/Oracle

Oracle - USER 사용자 관리

USER


사용자 계정 만들기/권한 부여/권한 취소


먼저 SYS계정으로 접속하여 새로운 USER생성


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> CREATE USER USER1
  2  IDENTIFIED BY TIGER
  3  ;

사용자가 생성되었습니다.


SQL> CONN USER1/TIGER
ERROR:
ORA-01045: user USER1 lacks CREATE SESSION privilege; logon denied


경고: 이제는 ORACLE에 연결되어 있지 않습니다.
접속이안된다.SYS로부터 접속 권한을 부여받아야한다


SQL> GRANT CONNECT, RESOURCE TO USER1;
SP2-0640: 연결되지 않았습니다.


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> GRANT CONNECT, RESOURCE TO USER1;

권한이 부여되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> select * from scott.emp;
select * from scott.emp
                    *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다



다른 계정으로 권한 부여


SQL> CONN SCOTT/TIGER
연결되었습니다.


SQL> GRANT SELECT ON EMP TO USER1;


권한이 부여되었습니다.(SCOTT --> USER1)


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> SELECT * FROM SCOTT.EMP;
14 개의 행이 선택되었습니다.


Schema명과 User 명은 동일하다.

 

권한 취소하기 (SCOTT <-- USER1)


SQL> SHOW USER
USER은 "USER1"입니다


SQL> CONN SCOTT/TIGER
연결되었습니다.


SQL> REVOKE SELECT ON EMP FROM USER1;

권한이 취소되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> SELECT * FROM SCOTT.EMP;
SELECT * FROM SCOTT.EMP
                    *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다



SYS 계정에서 USER1 권한 취소


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> REVOKE CONNECT, RESOURCE FROM USER1;

권한이 취소되었습니다.


SQL> CONN USER1/TIGER
ERROR:
ORA-01045: user USER1 lacks CREATE SESSION privilege; logon denied


경고: 이제는 ORACLE에 연결되어 있지 않습니다.


* DCL(DATA CONTROL LANGUAGE)
  GRANT(권한부여), REVOKE(권한 회수)

 

두계정에 권한 한번에 주기


SQL> CREATE USER USER2
  2  IDENTIFIED BY TIGER;

사용자가 생성되었습니다.


SQL> GRANT CONNECT, RESOURCE TO USER1, USER2;

권한이 부여되었습니다.



SQL> CONN SCOTT/TIGER
연결되었습니다.


SQL> GRANT SELECT ON EMP TO USER1;

권한이 부여되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> SELECT * FROM SCOTT.EMP;

 

 


USER1이 받은 권한을 USER1이 USER2에게 줄때 이러면 오류가 난다.


SQL> GRANT SELECT ON SCOTT.EMP TO USER2;
GRANT SELECT ON SCOTT.EMP TO USER2
                      *
1행에 오류:
ORA-01031: 권한이 불충분합니다


다시 SCOTT계정으로


SQL> SHOW USER
USER은 "USER1"입니다


SQL> CONN SCOTT/TIGER
연결되었습니다.


SQL> GRANT SELECT ON EMP TO USER1
  2  WITH GRANT OPTION;

권한이 부여되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> GRANT SELECT ON SCOTT.EMP TO USER2;

권한이 부여되었습니다.




모든 테이블 열람할수 있는 권한


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> GRANT SELECT ANY TABLE TO USER1;

권한이 부여되었습니다.

다볼수 있다;;


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> SELECT * FROM SCOTT.DEPT;

 

이것도 USER2에게 권한을 줘보자


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> GRANT SELECT ANY TABLE TO USER1 WITH ADMIN OPTION;

권한이 부여되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> GRANT SELECT ANY TABLE TO USER2;


* 오브젝트 권한 에서는 WITH GRANT OPTION
  시스템 권한에서는  WITH ADMIN OPTION




ROLE (생성은 SYS 관리자만 가능)


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> DROP USER USER1;

사용자가 삭제되었습니다.


SQL> DROP USER USER2;

사용자가 삭제되었습니다.


SQL> CREATE USER USER1
  2  IDENTIFIED BY TIGER;

사용자가 생성되었습니다.


SQL> CREATE USER USER2
  2  IDENTIFIED BY TIGER;

사용자가 생성되었습니다.


SQL> GRANT CONNECT, RESOURCE TO USER1, USER2;

권한이 부여되었습니다.


SQL> SHOW USER
USER은 "SYS"입니다


SQL> CREATE ROLE CROLE;

롤이 생성되었습니다.


SQL> CREATE ROLE MROLE;

롤이 생성되었습니다.


SQL> CONN SCOTT/TIGER
연결되었습니다.


SQL> GRANT SELECT ON EMP TO CROLE;

권한이 부여되었습니다.


SQL> GRANT SELECT ON DEPT TO MROLE;

권한이 부여되었습니다.


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> GRANT CROLE TO USER1;

권한이 부여되었습니다.


SQL> GRANT MROLE TO USER2;

권한이 부여되었습니다.


SQL> CONN USER1/TIGER
연결되었습니다.


SQL> SELECT COUNT(*) FROM SCOTT.EMP;

  COUNT(*)                                                                     
----------                                                                     
        14                                                          

           

SQL> SELECT COUNT(*) FROM SCOTT.DEPT;
SELECT COUNT(*) FROM SCOTT.DEPT

                           *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL> CONN USER2/TIGER
연결되었습니다.


SQL> SELECT COUNT(*) FROM SCOTT.EMP;
SELECT COUNT(*) FROM SCOTT.EMP
                           *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL> SELECT COUNT(*) FROM SCOTT.DEPT;

  COUNT(*)                                                                     
----------                                                                     
         8                                    

                                

ROLE 을 부여 받으면 ROLE 안에 들어있는 모든 권한을행사할수있다.


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.


SQL> GRANT CROLE TO MROLE;

권한이 부여되었습니다.


SQL> CONN USER2/TIGER
연결되었습니다.


SQL> SELECT COUNT(*) FROM SCOTT.EMP;

  COUNT(*)                                                                     
----------                                                                     
        14                                                                     


ROLE 삭제


SQL> DROP ROLE CROLE




SCOTT 도 삭제를 해보자. ㄷㄷㄷ


SQL> CONN SYS/ORACLE AS SYSDBA
연결되었습니다.
SQL> DROP USER SCOTT;
DROP USER SCOTT
*
1행에 오류:
ORA-01922: 'SCOTT'(을)를 삭제하려면 CASCADE를 지정하여야 합니다


SQL> DROP USER SCOTT CASCADE;

사용자가 삭제되었습니다.


SQL> CREATE USER SCOTT
  2  IDENTIFIED BY LION;

사용자가 생성되었습니다.


SQL> GRANT CONNECT, RESOURCE TO SCOTT;

권한이 부여되었습니다.


SQL> CONN SCOTT/LION
연결되었습니다.



패스워드 변경


SQL> ALTER USER SCOTT
  2  IDENTIFIED BY TIGER;

사용자가 변경되었습니다.


SQL> CONN SCOTT/TIGER
연결되었습니다.


예제 재생성 스크립트


SQL> @C:\ORACLE\ORA92\SQLPLUS\DEMO\DEMOBLD.SQL


Building demonstration tables.  Please wait.
Demonstration table build is complete.
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production에서 분리되었습니다.

 

'Programing > Oracle' 카테고리의 다른 글

Oracle - Instance  (0) 2008.07.29
Oracle - DBMS의 구조  (0) 2008.07.29
Oracle - SEQUENCE , SYNONYM  (0) 2008.07.29
Oracle - INDEX  (0) 2008.07.29
Oracle - VIEW  (0) 2008.07.29