-
Database User (P13-1)
- SQL> conn system/system
Connected. - SQL> conn sys/system
ERROR:
ORA-28009: connection to sys should be as sysdba or sysoper
Warning: You are no longer connected to ORACLE.- // 현재 윈도우의 계정이 bit이고 그 상태에서 오라클을 설치하고, 해당 계정으로 로그인했기 때문에 아래 문장 가능
- // 윈도우에 로그인시 다른 계정으로 로그인 한다면 안됨~
- // sys 계정 접속 방법
- SQL> conn /as sysdba
Connected. - SQL> show user
USER is "SYS"
Manage User (P13-2)
- system or sys 계정으로 로그인 후 사용
- SQL> conn system/system
Connected.
SQL> CREATE USER user00 // ID
2 IDENTIFIED BY user00; // Password- User created.
- 생성된 User (user00)로 로그인 시도했지만 오류~
- 세션을 만들수 있는 권한이 없어서 로그인 안됨(P13-7에서 권한 주는 것 나옴)
- SQL> conn user00/user00;
ERROR:
ORA-01045: user USER00 lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
Privileges (P13-4)
- system 권한 : 세션을 만들 수 있냐? 또 다른 유저를 만들수 있냐?
- object 권한 : 특정 테이블을 업데이트 등을 할 수 있냐?
Control System Privileges (P13-6)
- 권한을 줄 때는 'GRANT'~
- 권한을 뺄 때는 'REVOKE'~
- user00계정에 create session 권한을 줌으로써 로그인 가능
- SQL> conn system/system
Connected. - SQL> GRANT create session To user00;
- Grant succeeded.
- SQL> conn user00/user00
Connected.
- 테이블 생성과 관련된 리소스에 대한 권한이 없으므로 user00 계정으로 테이블 생성 안됨~
- SQL> conn user00/user00
Connected. - SQL> CREATE TABLE x (a NUMBER);
CREATE TABLE x (a NUMBER)
*
ERROR at line 1:
ORA-01031: insufficient privileges
- user00 계정에 리소스 등의 권한 줌~
- user00 계정으로 테이블 생성 가능
- SQL> conn system/system
Connected. - SQL> GRANT connect, resource TO user00;
- Grant succeeded.
- SQL> conn user00/user00
Connected. - SQL> CREATE TABLE x (a NUMBER);
- Table created.
WITH ADMIN OPTION (13-9)
Object Privileges (P13-10)
- 특정 object에 대한 권한
- ON 절에서 사용함
Role (P13-13)
- 권한의 묶음
- user들에게 권한을 줄 때 하나씩 주기 힘드니까 권한을 묶어서 한번에 적용
- 권한 관리를 효율적으로 하기위해 사용
- P13-15 예제
- // Role를 이용해서 mgr에 권한을 묶음(select any table, update any table 권한)
- SQL> conn system/system
Connected. - SQL> CREATE ROLE mgr;
- Role created.
- SQL> GRANT select any table, update any table TO mgr;
- Grant succeeded.
- // 묶은 권한을 user00에 줌
- SQL> GRANT mgr to user00;
- Grant succeeded.
- SQL> conn user00/user00;
Connected. - // user00계정은 모든 테이블을 select, update 할 수 있는 권한을 받았으므로 test00계정의 s_dept 테이블을 select, update 할 수 있음
- SQL> SELECT * FROM test00.s_dept;
- 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 - 13 rows selected.
- SQL> UPDATE test00.s_emp SET salary = 0;
- 25 rows updated.
- SQL> ROLLBACK;
- Rollback complete.
- SQL> conn system/system
Connected. - // 권한을 뺏은 뒤로는 다시 권한 없어서 작동 안함~
- SQL> REVOKE mgr FROM user00;
- Revoke succeeded.
- SQL> conn user00/user00
Connected. - SQL> SELECT * FROM test00.s_dept;
SELECT * FROM test00.s_dept
*
ERROR at line 1:
ORA-00942: table or view does not exist
이 글은 스프링노트에서 작성되었습니다.