[sql] USER , ROLE

sesame·2021년 8월 13일
0

sql

목록 보기
15/24

USER

DB 관리자 SYS, SYSTEM 은 사용자 계정을 발급할 수 있다.

사용자 확인

show user;
--결과
--USER이(가) "SYS"입니다.

--사용자가 소유한 테이블 확인
SELECT *
FROM tab; --tab은 table의 약자로 테이블 정보 알려주는 딕셔너리

사용자 계정 생성

--관리자계정 접속
CONN sys/oracle AS SYSDBA;

--USER_NEW 생성
--사용자비밀번호 입력 : USER_NEW_PW
CREATE USER USER_NEW IDENTIFIED BY USER_NEW_PW;

--사용자생성확인
SELECT * FROM DBA_USERS;

📌사용자 생성할 때 기본 권한이 없으면 접속할 수 없다.
→ CONNECT와 RESOURCE를 부여하면 된다.

--기본권한 부여
GRANT CONNECT, RESOURCE TO USER_NEW;
--사용자 USER_NEW로 접속
CONN USER_NEW/USER_NEW_PW;

포함하는 권한

  • CONNECT
    ALTER SESSION, CREATE CLUSTER, CREATE DATABASE
    LINK, CREATE SEQUENCE, CREATE SESSION, CREATE
    SYNONYM, CREATE TABLE, CREATE VIEW
    //oracle 11g에서는 많은 권한이 빠져있음, 반드시 있는게 아니다!

  • RESOURCE
    CREATE CLUSTER, CREATE PROCEDURE, C CREATE
    SEQUENCE, CREATE TABLE, CREATE TRIGGER

  • DBA
    DATABASE객체 관리, 사용자계정관련 모든 권한.

사용자 계정 삭제

--관리자계정 접속
CONN sys/oracle AS SYSDBA;
--USER_NEW 계정삭제
DROP USER USER_NEW;

ROLE

권한의 부여와 회수를 쉽게할 수 있게 해준다.
한사용자가 여러 ROLE에 접근 가능, 한 ROLE에 여러 사용자 접근 가능

ROLE 생성

-- ROLE 생성
CREATE ROLE role명;

-- ROLE에 권한 부여
GRANT create session, create table TO role_manager;

-- scott, test1, test2 사용자에게 ROLE 부여
GRANT role_manager TO scott, test1, test2;

ROLE 부여한 사용자 권한 회수

REVOKE role_manager FROM test1, test2;

동의어(SYNONYM)

DB 객체의 별칭으로 공유하는 테이블에 접근할 때 [사용자명.테이블명]으로 접근하는데 동의어를 사용하면 좀 더 간결하게 접근할 수 있다.

CREATE [PUBLIC] SYNONYM 동의어명
FOR 사용자명.객체명(테이블, 뷰 등..);

공개 동의어(PUBLIC)

권한을 주는 사용자가 정의한 동의어, 누구나 사용가능

--- SYS로 로그인.
CONN SYS/ORACLE AS SYSDBA;
CREATE PUBLIC SYNONYM EMP_PUBLIC
FOR SCOTT.EMP;

--- 새로운 테스트유저를 생성하고, 기본롤과 해당테이블 열람권한을 부여하자.
CREATE USER TEST_USER1 IDENTIFIED BY 1234;
GRANT CONNECT, RESOURCE TO TEST_USER1;
GRANT SELECT ON SCOTT.EMP TO TEST_USER1;

--- TEST_USER1로 접속하고, EMP_PUBLIC에 접근해보자.
CONN TEST_USER1/1234;
SELECT * FROM EMP_PUBLIC;

비공개 동의어

객체에 접근권한이 있는 사용자가 정의한 동의어, 해당사용자만 사용가능

--- TEST_USER1로 접속하고, 비공개동의 MY_EMP를 만들어보자.
CONN TEST_USER1/1234;
CREATE SYNONYM MY_EMP
FOR SCOTT.EMP;

--MY_EMP 동의어로 테이블접근.
SELECT * FROM MY_EMP;

시스템 권한

사용자가 DB에 특정 작업 수행 가능하게 하는 권한

--부여
GRANT [system_privilege|role] TO [user|role|PUBLIC]
[WITH ADMIN OPTION]

--회수
REVOKE [system_privilege|role] FROM [user|role|PUBLIC]

객체 권한

테이블, 뷰, 시퀀스, 프로시저, 함수, 패키지에서 지정된 객체에 특별한 작업을 가능하게 하는 권한
PUBLIC으로 부여하면 회수할 때도 PUBLIC으로

--부여
GRANT object_privilege [column]
ON object
TO {user [, user]|role|PUBLIC}
[WITH GRANT OPTION]

--회수
REVOKE {privilege [, privilege,]|ALL}
ON object
FROM {user [, user]|role|PUBLIC}
[CASCADE CONSTRAINTS]

0개의 댓글