웹 개발/Oracle
[Oracle] 테이블 권한부여(GRANT) 및 시소님(SYNONYM) 생성
yutin
2022. 7. 27. 22:15
시노님(SYNONYM)이란?
동의어 라는 뜻으로 alias처럼 이름을 줄여주는 역할
본명이 아닌 다른 이름을 붙여서 할당한 이름으로 사용 가능함
보통 다른 유저의 객체(테이블, 뷰, 프로시저, 함수 등)를 참조할 때 많이 사용함
-> 실제 시노님을 사용하는 이유는 다른 유저의 이름과 객체의 실제 이름을 사용하는데 그 두개를 감춤으로써 데이터베이스의 보안을 개선하기 위함이라고 함
* 상황
: USER1 계정에서 생성한 테이블 TABLEINFO 를 USER2 계정에서 조회, 삽입 등 조작할 수 있도록 권한부여 및 시노님 생성 하려함.
1. USER2 에 테이블 권한 부여하기
USER1 계정으로 접속하여 USER2 계정에 TABLEINFO 권한 부여
--모든 권한을 주고 싶을 때
GRANT ALL ON USER1.TABLEINFO TO USER2;
--일부 권한만 주고 싶을 때
GRANT SELECT ON USER1.TABLEINFO TO USER2;
GRANT SELECT, INSERT, DELETE, UPDATE ON USER1.TABLEINFO TO USER2;
USER2 계정에 접속하여 권한 부여되었는지 확인
--SELECT 권한을 부여했을 때
SELECT * FROM USER1.TABLEINFO;
2. TABLEINFO 테이블 시노님 생성하기
시노님 생성에 앞서 중복된 이름 생성을 방지하기 위해 현재 DB에 있는 시노님을 확인
--전체 시노님 리스트 조회
SELECT * FROM ALL_SYNONYMS;
--특정 유저의 시노님 리스트 조회
SELECT * FROM ALL_SYNONYMS WHERE='USER2';
USER2 계정에 접속하여 USER1.TABLEINFO 시노님 생성하기
--PUBLIC은 모든 사용자가 접근 가능하도록 설정해주는 것임
--PUBLIC을 선언하지 않으면 기본값으로 PRIVATE가 선언됨
CREATE [PUBLIC] SYNONYM TABLEINFO FOR USER1.TABLEINFO;
TABLEINFO 시노님 생성되었는지 확인
SELECT * FROM TABLEINFO;
(번외)
TABLEINFO 시노님 삭제
--PUBLIC 시노님은 꼭 PUBLIC을 붙여서 삭제해야 한다
DROP [PUBLIC] SYNONYM TABLEINFO;
USER1 계정으로 접속하여 USER2에 부여한 TABLEINFO 테이블 권한 해제
REVOKE ALL ON TABLEINFO FROM USER2;
REVOKE SELECT, UPDATE ON TABLEINFO FROM USER2;
[참고]
https://bebeya1.tistory.com/12
https://gent.tistory.com/397
https://loveuceci.tistory.com/1202