본문 바로가기
데이터베이스/티베로

티베로 사용자 권한생성

by cbwstar 2021. 9. 10.
728x90
반응형

--db사용자 추가및 테스트
--티베로 테스트 테이블 스페이스 생성

  CREATE TABLESPACE EXAM_TBL
    DATAFILE '/tibero_naqs/tbdata/exam_tbl.tbf' SIZE 100M AUTOEXTEND OFF
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
    
  CREATE TABLESPACE EXAM_IDX
    DATAFILE '/tibero_naqs/tbdata/exam_idx.tbf' SIZE 100M AUTOEXTEND OFF
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

--사용자 추가
   CREATE USER EXAM
    IDENTIFIED BY EXAM
    DEFAULT TABLESPACE EXAM_TBL;

--사용자 삭제
DROP USER [유저명] cascade;
DROP USER EXAM cascade;

--연결권한 설정
GRANT RESOURCE,CONNECT TO EXAM;

GRANT SELECT ANY TABLE TO EXAM;

--권한제거
REVOKE DBA FROM EXAM;

--DBA에 권한 등록 조회
  SELECT *
     FROM DBA_SYS_PRIVS
    WHERE GRANTEE = 'EXAM';

--통계데이터 생성
select 
'EXEC DBMS_STATS.GATHER_SCHEMA_STATS (ownname => ''' || username || ''',method_opt => ''FOR ALL COLUMNS SIZE 10'',cascade => true, no_invalidate => false);'
from dba_users
where username in ('EXAM')
;
select 
'EXEC DBMS_STATS.DELETE_SCHEMA_STATS (ownname => ''' || username || ''',no_invalidate  => false);'
from dba_users
where username in ('EXAM')
;

 EXEC DBMS_STATS.DELETE_SCHEMA_STATS(ownname => 'EXAM', no_invalidate =>false);
 EXEC DBMS_STATS.GATHER_SCHEMA_STATS (ownname => 'EXAM',method_opt => 'FOR ALL COLUMNS SIZE 10',cascade => true, no_invalidate => false);

-- 기존권한 조회해서 똑같이 권한설정
SELECT 'GRANT '|| PRIVILEGE || ' TO EXAM;' AS GRANT1
  FROM DBA_SYS_PRIVS
WHERE GRANTEE = 'TIBERO';

begin 

for X in (
select 'GRANT '|| PRIVILEGE || ' TO EXAM;' AS GRANT1
FROM DBA_SYS_PRIVS
    WHERE GRANTEE = 'TIBERO'

loop
execute immediate x.GRANT1;
end loop;
 end;

GRANT DROP USER TO EXAM;
GRANT LOCK ANY TABLE TO EXAM;
GRANT SELECT ANY TABLE TO EXAM;
GRANT INSERT ANY TABLE TO EXAM;
GRANT UPDATE ANY TABLE TO EXAM;
GRANT DELETE ANY TABLE TO EXAM;
GRANT SYSDBA TO EXAM;
GRANT CREATE VIEW TO EXAM;
GRANT SELECT ANY SEQUENCE TO EXAM;
GRANT GRANT ANY ROLE TO EXAM;
GRANT EXECUTE ANY PROCEDURE TO EXAM;
GRANT DROP ANY TRIGGER TO EXAM;
GRANT GRANT ANY PRIVILEGE TO EXAM;
GRANT GRANT ANY OBJECT PRIVILEGE TO EXAM;
GRANT EXECUTE ANY LIBRARY TO EXAM;
GRANT CREATE ANY TABLE TO EXAM;


-- 다른 스키마의 권한을 테이블별로 사용할수 있게 준다.
 GRANT ALL ON SMARTSTOCK_D.TD_FARM TO SMARTSTOCK;

--시스템 개인 및 개체 개인의 두 가지 종류의 권한이 있습니다.
GRANT ALL PRIVILEGES TO user;

--모든 시스템 권한을 사용자에게 부여하며 매우 신중하게 사용해야합니다!
GRANT ALL ON table TO user;


--SYNONYM 설정
(1) 문법

CREATE [PUBLIC] SYNONYM synonym이름

FOR [schema. ] 대상객체 ; 

SYNONYM도 스키마 오브젝트이므로 만든 사람만 사용할 수 있다. 즉 SCOTT이 어떤 SYNONYM을 생성하게 되면 SCOTT만 사용할 수 있다는 뜻이다. 
그래서 다른 사용자도 다 쓸 수 있게 생성하려면 PUBLIC이란 키워드를 사용해서 생성해야만 한다.
 그리고 동의어를 생성하려면 CREATE SYNONYM 이란 권한이 필요하므로 아래와 같은 작업으로 권한을 먼저 할당해야 한다.

GRANT CREATE SYNONYM TO EXAM;

GRANT CREATE PUBLIC SYNONYM TO EXAM;

GRANT DROP PUBLIC SYNONYM TO EXAM;
 


(2) 생성 예
1. EXAM 사용자의 emp2 테이블의 동의어를 e2로 생성하세요.
CREATE SYNONYM e2 FOR emp2 ;
2. Scott 사용자의 department 테이블의 동의어를 d2로 생성하되 모든 사용자들이 사용할 수 있도록 생성하세요.
CREATE PUBLIC SYNONYM d2 FOR department ;

(3) SYNONYM 조회하기
 
SELECT *
FROM user_synonyms ;

SELECT *
 FROM DBA_SYNONYMS;

(4) SYNONYM 삭제하기
 DROP SYNONYM E2;

GRANT와 REVOKE 는 권한과 관련된 예약어이다.
GRANT 는 권한을 부여할 때 사용하고 REVOKE는 부여된 권한을 뺏을때 사용한다.
예를들어 DBA가 사용자 계정을 생성 할 때 'CREATE USER' 라는 명령어를 사용한다. 
하지만 이렇게 생성된 사용자는 DB에 접속하지 못한다.  접속이 가능하게 하려면 'GRANT'명령어로  'CREATE 'SESSION' 권한(Privilege)을 부여하면 그제서야 그 사용자는 디비에 접근이 가능하다.

SYSTEM PRIVILEGE
 DBA만 부여 할 수 있는 권한을 SYSTEM PRIVILEGE 라고 한다.
대표적인 SYSTEM PRIVILEGE는 'CREATE SESSION', 'CREATE TABLE', 'CREATE SEQUENCE', 'CREATE VIEW', 'CREATE PROCEDURE' 가 있다. 

유저 생성
CREATE USER [유저명] IDENTIFIED BY [비밀번호];

ex) CREATE USER SHIINATSU IDENTIFIED BY *******;
-> 'SHIINATSU' 라는 유저를 생성, 비밀번호는 '*******'

※ 유저 패스워드 변경
ALTER USER [유저명] IDENTIFIED BY [변경할 비밀번호];
ex) ALTER USER SHIINATSU IDENTIFIED BY #######;
-> 'SHIINATSU' 라는 유저의 비밀번호를 '#######'로 변경
※ 유저 삭제
DROP USER [유저명];
ex) DROP USER SHIINATSU;
-> 'SHIINATSU' 라는 유저를 삭제
※ 시스템 권한
GRANT [권한명|롤|ALL] TO [유저명|롤|PUBLIC]
[WITH ADMIN OPTION|WITH GRANT OPTION]
ex) GRANT CREATE SESSION TO SHIINATSU;
-> 'SHIINATSU' 라는 유저에게 DB에 연결할 수 있는 권한부여
ex) GRANT CREATE TABLE TO SHIINATSU;
-> 'SHIINATSU' 라는 유저에게 테이블을 생성할 수 있는 권한부여
ex) GRANT CREATE SESSION, CREATE TABLE TO SHIINATSU;
-> 권한을 동시에 여러개 줄 때는 콤마(,)로 구분
WITH ADMIN OPTION : (A=>B 권한부여, B=>C 권한부여) A=>B 권한제거시 C의 권한은 유지
WITH GRANT OPTION : (A=>B 권한부여, B=>C 권한부여) A=>B 권한제거시 C의 권한도 같이제거
※ OBJECT 권한 : 특정 객체에 조작을 할 수 있는 권한
GRANT [권한명|ALL] ON [객체명|PUBLIC] TO [유저명];
ex) GRANT ALL ON [pakage_test] TO SHIINATSU;
-> [pakage_test]의 모든 권한을 'SHIINATSU' 유저에게 부여
※ 권한 제거(REVOKE) : 부여한 권한을 제거
REVOKE [권한명|ALL] ON [객체명] FROM [유저명|롤|PUBLIC];
ex) REVOKE CREATE SESSION FROM SHIINATSU;
-> 'SHIINATSU' 유저의 DB 연결 권한을 제거

728x90
반응형

'데이터베이스 > 티베로' 카테고리의 다른 글

시퀀스 현재값 변경하기  (0) 2021.09.10
Transaction Lock 및 오래된 SESSION 삭제  (0) 2021.09.10
티베로 통계자료 생성  (0) 2021.09.10
테이블 스페이스 계산  (0) 2021.09.10
테이블명 변경  (0) 2021.09.09

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading