• Database User (P13-1)

  1. SQL> conn system/system
    Connected.
  2.  
  3. SQL> conn sys/system
    ERROR:
    ORA-28009: connection to sys should be as sysdba or sysoper

  4. Warning: You are no longer connected to ORACLE.
  5.  
  6. // 현재 윈도우의 계정이 bit이고 그 상태에서 오라클을 설치하고, 해당 계정으로 로그인했기 때문에 아래 문장 가능
  7. // 윈도우에 로그인시 다른 계정으로 로그인 한다면 안됨~
  8. // sys 계정 접속 방법
  9. SQL> conn /as sysdba
    Connected.
  10.  
  11. SQL> show user
    USER is "SYS"

 

 

Manage User (P13-2)

  • system or sys 계정으로 로그인 후 사용
  1. SQL> conn system/system
    Connected.

  2. SQL> CREATE USER user00      // ID
      2  IDENTIFIED BY user00;   // Password
  3. User created.

 

  • 생성된 User (user00)로 로그인 시도했지만 오류~
  • 세션을 만들수 있는 권한이 없어서 로그인 안됨(P13-7에서 권한 주는 것 나옴)
  1. SQL> conn user00/user00;
    ERROR:
    ORA-01045: user USER00 lacks CREATE SESSION privilege; logon denied

  2. Warning: You are no longer connected to ORACLE.

 

 

Privileges (P13-4)

  • system 권한 : 세션을 만들 수 있냐? 또 다른 유저를 만들수 있냐?
  • object 권한 : 특정 테이블을 업데이트 등을 할 수 있냐?

 

 

Control System Privileges (P13-6)

  • 권한을 줄 때는 'GRANT'~
  • 권한을 뺄 때는 'REVOKE'~

 

  • user00계정에 create session 권한을 줌으로써 로그인 가능
  1. SQL> conn system/system
    Connected.
  2.  
  3. SQL> GRANT create session To user00;
  4. Grant succeeded.
  5.  
  6. SQL> conn user00/user00
    Connected.

 

  • 테이블 생성과 관련된 리소스에 대한 권한이 없으므로 user00 계정으로 테이블 생성 안됨~
  1. SQL> conn user00/user00
    Connected.
  2.  
  3. SQL> CREATE TABLE x (a NUMBER);
    CREATE TABLE x (a NUMBER)
    *
    ERROR at line 1:
    ORA-01031: insufficient privileges

 

  • user00 계정에 리소스 등의 권한 줌~
  • user00 계정으로 테이블 생성 가능
  1. SQL> conn system/system
    Connected.
  2. SQL> GRANT connect, resource TO user00;
  3. Grant succeeded.
  4.  
  5. SQL> conn user00/user00
    Connected.
  6.  
  7. SQL> CREATE TABLE x (a NUMBER);
  8. Table created.

 

 

WITH ADMIN OPTION (13-9)

 

 

Object Privileges (P13-10)

  • 특정 object에 대한 권한
  • ON 절에서 사용함

 

 

Role (P13-13)

  • 권한의 묶음
  • user들에게 권한을 줄 때 하나씩 주기 힘드니까 권한을 묶어서 한번에 적용
  • 권한 관리를 효율적으로 하기위해 사용

 

  • P13-15 예제
  1. // Role를 이용해서 mgr에 권한을 묶음(select any table, update any table 권한)
  2. SQL> conn system/system
    Connected.
  3.  
  4. SQL> CREATE ROLE mgr;
  5. Role created.
  6.  
  7. SQL> GRANT select any table, update any table TO mgr;
  8. Grant succeeded.
  9.  
  10. // 묶은 권한을 user00에 줌
  11. SQL> GRANT mgr to user00;
  12. Grant succeeded.
  13.  
  14. SQL> conn user00/user00;
    Connected.
  15.  
  16. // user00계정은 모든 테이블을 select, update 할 수 있는 권한을 받았으므로 test00계정의 s_dept 테이블을 select, update 할 수 있음
  17. SQL> SELECT * FROM test00.s_dept;
  18.         ID NAME                       REGION_ID
    ---------- ------------------------- ----------
            10 Finance                            1
            31 Sales                              1
            32 Sales                              2
            33 Sales                              3
            34 Sales                              4
            35 Sales                              5
            41 Operations                         1
            42 Operations                         2
            43 Operations                         3
            44 Operations                         4
            45 Operations                         5
            50 Administration                     1
           100 x                                  2
  19. 13 rows selected.
  20.  
  21. SQL> UPDATE test00.s_emp SET salary = 0;
  22. 25 rows updated.
  23.  
  24. SQL> ROLLBACK;
  25. Rollback complete.
  26.  
  27. SQL> conn system/system
    Connected.
  28.  
  29. // 권한을 뺏은 뒤로는 다시 권한 없어서 작동 안함~ 
  30. SQL> REVOKE mgr FROM user00;
  31. Revoke succeeded.
  32.  
  33. SQL> conn user00/user00
    Connected.
  34.  
  35. SQL> SELECT * FROM test00.s_dept;
    SELECT * FROM test00.s_dept
                         *
    ERROR at line 1:
    ORA-00942: table or view does not exist
  36.  

이 글은 스프링노트에서 작성되었습니다.

Posted by Gungume
,