[oracle] grant(권한 부여하기) , revoke(권한 회수하기)

심심이·2024년 2월 29일

oracle

목록 보기
15/40
post-thumbnail
 
    --- **** SYS 또는 SYSTEM 에서 아래와 같은 작업을 한다. 시작 **** --- => 위의 데이터베이스를 local_sys로 바꿈
    show user;
    -- USER이(가) "SYS"입니다.
    
    --  orauser1 이라는 오라클 일반사용자 계정을 생성합니다. 암호는 gclass 라고 하겠습니다.
    alter session set "_ORACLE_SCRIPT"=true;
    -- Session이(가) 변경되었습니다.
    
    create user orauser1 identified by gclass default tablespace users;
    -- User ORAUSER1이(가) 생성되었습니다.
    
    -- orauser1 계정의 암호를 abcd 로 변경한 것임.
    alter user orauser1 identified by abcd;
    -- User ORAUSER1이(가) 생성되었습니다.
    
    alter user orauser1 identified by gclass;
    -- User ORAUSER1이(가) 변경되었습니다.
    
    /*
    왼쪽에 접속
    + 새접속
    Name: local_orauser1
    사용자 이름:orauser1
    비번:멋대로
    테스트 누르기 
    --> 유저명/암호가 맞지 않아 로그온할 수 없음.
    
    암호를 gclass로 입력 후 테스트 누르기
    --> 사용자 ~는 create session 권한을 가지고있지 않음:로그온할 수 없음
    --> 왜? 오라클 서버에 접속할 수 있는 권한이 없어서
    
    grant 하고 권한 주고 다시 해보면 된다.
    
    */
    

이렇게 뜰 텐데, 밑에서 권한을 부여해주고 나서 다시 한번 만들자

    -- 생성되어진 오라클 일반사용자 계정인 orauser1 에게 오라클서버에 접속이 되어지고, 
    -- 접속이 되어진 후 테이블 등을 생성할 수 있도록 권한을 부여해주겠다.
    grant connect, resource, unlimited tablespace to orauser1;
    -- Grant을(를) 성공했습니다.
    
    --- **** SYS 또는 SYSTEM 에서 작업을 하는 것 끝 **** ---

성공이 뜨면 저장 후 접속한다!

    
--- **** HR에서 아래와 같은 작업을 한다. **** ---

show user;
-- USER이(가) "HR"입니다.

select *
from HR.employees; -- 이게 원칙이지만, 현재 오라클 서버에 접속된 사용자가 HR 이므로 HR.employees 대신에 employees 을 쓰면 HR.employees 으로 인식해준다.

select *
from employees;

-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select 할 수 있도록 권한을 부여하겠습니다.
grant select on employees to orauser1;
-- Grant을(를) 성공했습니다.

-- orauser1 에게 HR이 자신의 소유인 departments 테이블에 대해 select 할 수 있도록 권한을 부여하겠습니다.
grant select on departments to orauser1;


 -- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 update 할 수 있도록 권한을 부여하겠습니다. - auto 커밋 grant
grant update on employees to orauser1;
-- Grant을(를) 성공했습니다.

  -- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 delete 할 수 있도록 권한을 부여하겠습니다. - auto 커밋 grant
grant delete on employees to orauser1;
-- Grant을(를) 성공했습니다.


select *
from employees
where employee_id = 100;

select *
from employees
where department_id is null; 
--아직 local_arauser1 에서 커밋 안해서 제대로 보임(select는 커밋 안 해도 보임, 나머지 dml은 안 됨)

update employees set salary = 22222
where employee_id = 100; -- local_arauser1 에서 커밋 안 해서 락이 걸린 상태 


update employees set salary = 7777
where department_id is null; 
-- local_arauser1 에서 커밋 안 해서 락이 걸린 상태 (해당행)

-- !!!!!!!!! 꼭 local_arauser1 에서 업데이트,딜리트 할때 커밋해야만 한다 !!!!!!!!!!
-- 반드시 해야함 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

revoke로 권한 뺏기


-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select 권한을 회수하겠습니다.
revoke select on employees from orauser1;
-- Revoke을(를) 성공했습니다.

revoke select on departments from orauser1;

-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 delete 권한을 회수하겠습니다.
revoke delete on employees from orauser1;
-- Revoke을(를) 성공했습니다.

-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 update 권한을 회수하겠습니다.
revoke update on employees from orauser1;
-- Revoke을(를) 성공했습니다.

-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select, update, delete 권한을 한꺼번에 주겠습니다.
grant select, update, delete on employees to orauser1;
-- grant 을(를) 성공했습니다.

rollback;
--롤백 완료.

-- orauser1 에게 HR이 자신의 소유인 employees 테이블에 대해 select, update, delete 권한을 회수하겠습니다.
revoke select, update, delete on employees from orauser1;
-- Revoke을(를) 성공했습니다.



-- 오라클을 설치한지 6개월이 지나면 자동적으로 HR의 암호가 만료가 되어진다.
-- 그래서 아래와 같이 암호를 갱신해주면 됩니다.

show user;
-- USER이(가) "HR"입니다.
alter user hr identified by gclass;
-- User HR이(가) 변경되었습니다.

show user;
-- USER이(가) "SYS"입니다.
alter user hr identified by gclass;
-- User HR이(가) 변경되었습니다.

show user;
-- USER이(가) "HR"입니다.
profile
개발하는 심심이

0개의 댓글