Or13Privileges
/********
# 파일명 : Or13Privileges.sql
# 사용자권한
# 설명 : 새로운 사용자를 생성하고 시스템권한을 부여하는 방법을 학습
********/
/*
[사용자 생성 및 권한설정]
- 해당 작업은 DBA권한이 있는 최고관리자(sys, system)로 접속후 해야한다.
[1]사용자 생성 및 암호 설정
사용법 :
create user 아이디 Identified by 비밀번호;
*/
create user fest_user1 Identified by 1234; --사용자계정 생성 성공
create user test_user1 Identified by 1234; --사용자계정 생성 성공
conn test_user1/1234;
conn hr/1234;
SQL > conn test_user1/1234;/*
새로 생성한 사용자로 접속을 시도 : 접속 거부됨.
-사용자는 생성이 되었으나 접속권한이 없기 때문에 접속이 거부된다.
-사용자는 생성 직후에는 어떠한 권한도 가지지 못한다.
-DB에 접속하려면 create session 권한을 부여받아야 한다.
*/
/*
[2] 사용자에 권한 혹은 역할부여
사용법 :
grant 시스템권한1[,시스템권한2....] | [역할1 [, 역할....]
To 사용자1[,사용자2...] | [역할1 [,역할2....]
[with grant option] <- 부여받은 시스템 권한을 다른 사용자에게
부여할 수 있는 권한
- 사용자는 데이터베이스에 엑세스하기 위한 시스템권한(System Privilege)
이 필요하고, 데이터베이스 객체의 내용을 조작하기 위해 객체권한(Object Privilege)
이 필요하다.
- 시스템 권한은 종류가 200개 이상이고, 객체권한은 28개이다 (10g기준)
- 시스템 권한은 주로 DBA가 부여한다. (SYS /SYSTEM)
- DBA는 상급의 시스템 권한을 부여한다.
*/
--cmd창에서 실습
/*
* whith grant option을 사용하여 권한을 부여받은 사용자는 다른 사용자에게
자신의 권한을 부여할 수 있게 된다.
*/
--CMD창에서 실습
/*
2-1] 시스템 권한 부여
-시스템 권한 확인하기
SQL>
select * from system_privilege_map;
-alter any 계열 : alter any table, alter any proceddure, alter any index,
alter user 등 (자체 스키마 뿐만 인라 모든 스키마에서 권한 있음)
-create any 계열 : create any table, create any procedure, create any index 등
(자체 스키마 뿐만 아니라 모든 스키마에서 권한있음)
_create 계열 : create session, create table, create view, create user 등
(자체 스키마에서만 권한있음)
create session : 접속할 수 있는 권한(conn 아이디/ 패스워듬)
create table : 테이블 생성 권한
create view : 뷰 생성 권한
create user : 사용자 생성권한
2-2] 객체 권한 부여
- 객체 권한 확인하기
SQL>
select * from table_privilege_map;
-객체 권한 시스템 권한을 주면 (create table) 자동으로 객체권한(insert/select/
delete/update)등이 부여된다.
사용예] grant create table, create session, create view to 사용자아이디 :
-> 사용자에게 접속, 테이블생성, 뷰 생성 권한을 부여함
[3] 암호변경 및 할당량 부여
-암호변경
alter user 사용자아이디 identified by 새암호;
-할당량 부여
create table 권한을 부여한 후 할당량을 부여받을 수 있다.
alter user 사용자아이디 quota 할당량 on user;
사용예] alter user test_user1 quota 5M on users;
[4] 권한이 없는 다른 사용자에게 특정 테이블 조회권한 부여하기
사용법 :
grant select on 다른사용자아이디, 테이블 to 사용자아이디;
[5] ROLE(를)을 통해 여러가지 권한 동시에 주기
1) 롤의 기념개념과 사용법
: 여러 사용자가 다양한 권한을 효과적으로 관리할 수 있도록 관련된 권한끼리
묶어놓은것
롤의 종류
-DBA : 시스템 관리에 필요한 모든 권한을 부여함(전체권한)
-CONNECT : DB접속이 가능하도록 가장 기본적인 시스템권환 8가지를 그룹화함
(접속권한)
-RESOURCE : 사용자가 객체(테이블, 뷰, 인덱스)를 생성할 수 있도록 하기 위해
시스템 권한을 그룹화함(객체생성권한)
* 최초 사용자를 생성하면 기본적으로 Connect롤과 Resource롤을 부여한다.
*/
--CMD
/*
2) 롤 생성 : 사용자가 원하는 권한을 묶어 롤을 생성할 수 있다.
사용법 :
create role 롤명칭;
3) 롤에 권한 부여
사용법 :
grant 권한1, 권한2,.....권한N to 롤명칭;
4) 새로운 사용자에게 롤 권한 부여
사용법 :
grant 롤명칭 to 사용자1, 사용자2.....;
5) 롤 제거
사용법 :
drop role 롤명칭;
-롤 확인하기 :
select * from role_sys_privs where role like '%롤명칭%';
[6] 권한제거
사용법
revoke 권한 및 역할 from 사용자아이디:
* 단, with grant option으로 부여된 권한은 취소되지 않는다.\
--CMD
[7] 사용자삭제
사용법 :
drop user 사용자아이디 cascade;
* cascade 를 명시하면 유저네임과 관련된 모든 데이터베이스 슼니마가
데이터사전으로부터 삭제되고 모든 스키마 객체도 물리적으로 삭제된다.
* 데이터사전이란 ? : 사용자가 데이터베ㅐ이스 지원을 효율적으로 관리하기 위한
다양한 정보를 저장하는 시스템 테이블의 집합이다. 사용자가 테이블을 생성/변경
작업등을 할 때 자동적으로 업데이트 된다.
* 사용자목록보기
SQL> desc dba_users;
SQL> select username from dba_users;
*사용자가 가진 시스템관련 보기
SQL> desc dab_sys_privs;
SQL> select privilege from dba_sys_privs where grantee=upper('test_user1');
*사용자계정 잠금풀면서 동시에 암호변경(hr. scott계정에서 사용한적 있음)
SQL> alter table 사용자아이디 account unlock identified by 비번;
SQL> alter table 사용자아이디 acount unlock; <- 계정잠금해제
SQL> alter table 사용자아이디 identified by 비번; <- 암호부여
*/
'프로그래밍 > Oracle' 카테고리의 다른 글
Or15PLSQL (0) | 2017.11.16 |
---|---|
Or14View (0) | 2017.11.15 |
Or12Sequenceindex (0) | 2017.11.15 |
Or11ConStraintRule (0) | 2017.11.15 |
Or10DML (0) | 2017.11.15 |