/*- 12_시스템 권한.sql -*/
/*
* # 데이터베이스 보안을 위한 권한
* - 시스템 권한, 객체 권한 두 가지 종류.
*
* # 시스템 권한
* - 사용자 생성과 제거, DB 접근 및 여러가지 객체를 생성할 수 있는 권한 등으로 주로 DBA에 의해 부여됌.
*
* # 객체 권한
* - 테이블, 뷰 등의 객체
*/
/*
* # 사용자 생성
* - 사용자 계정을 생성하기 위해서는 시스템 권한을 가진 system으로 접속해야함.
* CREATE USER '사용자 이름'
* INDENTIFIED BY '사용자 암호'
* [ WITH ADMIN OPTION ];
*/
-- SYSTEM 계정 연결
-- TEST 계정 생성
CREATE USER TEST IDENTIFIED BY test1234;
-- 생성된 계정 목록 확인
SELECT * FROM ALL_USERS;
/*- 12_시스템권한_SYSTEM -*/
-- TEST 계정 생성
CREATE USER TEST IDENTIFIED BY test1234;
-- 생성된 계정 목록 확인
SELECT * FROM ALL_USERS;
-- CREATE SESSION : 데이터베이스에 접속할 수 있는 권한.
GRANT CREATE SESSION TO TEST;
/* QUIZ */
-- DBTEST_A 계정을 생성하고, 기본 2개의 롤 권한( CONNECT, RESOURCE )을 부여.
-- > 1. 계정 생성
-- 2. 생성된 계정에 권한 부여
-- 3. ALTER USER 계정명 DEFAULT TABLESPACE USERS; -> 데이터베이스 저장되는 공간 지정
-- 4. ALTER USER 계정명 QUOTA UNLIMITED ON USERS; -> tablespace 용량 지정
CREATE USER DBTEST_A IDENTIFIED BY 1234;
SELECT * FROM ALL_USERS;
GRANT CONNECT, RESOURCE TO DBTEST_A;
ALTER USER DBTEST_A DEFAULT TABLESPACE USERS;
ALTER USER DBTEST_A QUOTA UNLIMITED ON USERS;
-- DBTEST_A 계정에 회원 정보를 관리하는 MEMBER 테이블을 생성.
-- > SEQ - 회원수 : 시퀀스 적용
-- ID(30) - 회원 ID : 중복 X, NULL 값 사용 불가
-- NAME(30) - 회원 이름 : NULL 값 사용 불가
-- AGE(3) - 회원 나이
-- HEIGHT - 회원 키 : 전체 10자리, 소수점 2번째 자리까지 가능
-- LOGTIME - 생성일자
CREATE TABLE DBTEST_A.MEMBER(
SEQ NUMBER(2) NOT NULL,
ID VARCHAR2(30) CONSTRAINT PK_ID PRIMARY KEY,
NAME VARCHAR2(30) CONSTRAINT NN_NAME NOT NULL,
AGE NUMBER(3),
HEIGHT NUMBER(10,2),
LOGTIME DATE
);
DESC DBTEST_A.MEMBER;
SELECT * FROM DBTEST_A.MEMBER;
-- MEMBER 테이블에 데이터 추가, 삭제
CREATE SEQUENCE DBTEST_A.MEMBER_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 100 NOCACHE NOCYCLE;
INSERT INTO DBTEST_A.MEMBER VALUES (DBTEST_A.MEMBER_SEQ.NEXTVAL, 'id1', 'kimdusik', 40, 180.42, SYSDATE);
INSERT INTO DBTEST_A.MEMBER VALUES (DBTEST_A.MEMBER_SEQ.NEXTVAL, 'id2', 'jangjuwon', 45, 175.422, SYSDATE);
DELETE FROM DBTEST_A.MEMBER WHERE ID='id2';
-- MEMBER 테이블 삭제
DROP TABLE DBTEST_A.MEMBER PURGE;
DROP SEQUENCE DBTEST_A.MEMBER_SEQ;
-- DBTEST_A 계정 삭제
DROP USER DBTEST_A CASCADE;
SELECT * FROM ALL_USERS;