일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- htmlFor
- createtextnode
- 학습법 #집중력
- createElement
- const
- input
- Let
- boolean
- VAR
- appendChild
- FOR
- Openlayers
- Append
- Today
- Total
Atomic Habits
시노님(SYNONYM) & 테이블 권한 부여 본문
G O T
C F
R O F
1. 권한 부여와 권한 회수
작업 순서 : SVC2 접속 -> RAW 에게 INSERT 권한 부여 -> RAW 접속 & INSERT -> 권한 회수(REBOKE)
SVC2 접속) GRANT ALL ON SVC2.TAB TO RAW
RAW 접속) INSERT INTO SVC2.TAB SELECT * FROM RAW.TAB;
SVC2 접속) REVOKE SELECT, INSERT, DELETE, UPADATE ON SVC2.TAB FROM RAW;
REVOKE ALL ON SVC2.TAB FROM PUBLIC(전체 대상);
**************************************************************************************************
DROP SYNONYM [STG 시노님 소유하는 계정].RENT_APT;
CREATE SYNONYM [STG 시노님 소유하는 계정].RENT_APT FOR [SVC2테이블 소유 계정].RENT_APT ;
-------------- 시노님을 사용하지 않는다면, 아래 권한만 부여해도 되지 않을까? --------------
GRANT ALL ON [SVC2.RENT_APT 테이블 소유 계정] TO [SVC - 실제 쿼리 날릴 계정];
(SVC - 실제 쿼리 날릴 계정)에서 쿼리 수행 >>> DELETE FROM [SVC2.RENT_APT 테이블 소유 계정] ;
**************************************************************************************************
2. 시노님(Synonym) 을 생성하는 권한을 부여하는 방법입니다.
1) 시노님 생성 권한을 부여합니다.
시노님을 생성하기 위해서는 [ 시노님 생성권한 ] 과
시노님을 생성하려는 [ 유저의 테이블에 대한 접근 권한 ]이 필요합니다
시노님 생성권한 부여 쿼리는 다음과 같습니다.
SQL> GRANT CREATE SYNONYM to '시노님 생성권한을 받을 유저명'
예시> GRANT CREATE SYNONYM to 'B1'
2) 테이블 접근권한을 부여합니다. 명령어는 아래와 같습니다.
여기서 나는 SELECT 권한만 주고 싶다면 ALL 대신 SELECT를 입력하시면 됩니다.
SQL> GRANT '권한명' ON '유저명.테이블명' TO '권한받을 유저';
= GRANT '권한명' ON '소유자.테이블명' TO '권한받을 유저(테이블 비 소유자)';
예시> GRANT ALL ON A1.table01 TO B1;
3) 권한을 부여한 테이블에 접근이 가능한지 테스트를 진행해 봅니다.
권한부여를 완료했으니 사용자 B1으로 접속하여 A1.table01로 접근이 가능한지 테스트를 진행합니다.
쿼리가 정상적으로 수행된다면 시노님 생성을 위한 준비가 완료되었습니다.
SQL> SELECT * FROM A1.table01;
3. 시노님(Synonym) 을 생성하는 방법 입니다.
아래의 명령어를 실행해 시노님을 생성합니다.PUBLIC은 모든 사용자가 접근이 가능하도록 설정해주는 것입니다.
PUBLIC을 선언해주지 않으면 기본값으로 PRIVATE가 선언됩니다. (로그인한 유저 기준으로 생성됩니다.)
SQL> CREATE [ PUBLIC ] SYNONYM '시노님 소유할 계정 . 시노님 이름' FOR '테이블 소유 계정 . 객체 이름'
1) 사용자 B1로 로그인하여 시노님 생성을 진행합니다.
SQL> CREATE SYNONYM A1_table01 FOR A1.table01;
= CREATE SYNONYM B1.A1_table01 FOR A1.table01;
2) 이제 B1 사용자는 A1.table01을 조회할 때 A1_table01 을 사용하여 출력이 가능하게 되었습니다 (A1_table01 = A1.table01)
SQL> SELECT * FROM A1_table01;
4. 시노님(Synonym) 삭제하는 방법입니다.
생성했던 시노님 명을 아래와 같이 입력하시면 삭제가 됩니다.
SQL> DROP SYNONYM A1_table01;
5. 시노님(synonym) 조회하는 방법입니다.
SELECT * FROM USER_SYNONYMS;
SELECT * FROM ALL_SYNONYMS;
출처 : https://bebeya1.tistory.com/12
-----------------------------------------------------------------------------------------------
1. 시노님(Synonym) 생성
CREATE [ PUBLIC ] SYNONYM [ 시노님 이름 ]
FOR [ 객체 이름 ]
* PUBLIC은 모든 사용자가 접근이 가능하도록 설정해주는 것입니다.
* PUBLIC을 선언해주지 않으면 기본값으로 PRIVATE가 선언됩니다.
EX) 예를 들어보겠습니다.
일단은 유저가 두명이 있다고 가정하겠습니다.( user1 / user2 )
1) user1 이 가지고있는 테이블에 대해 user2가 접근이 가능하도록 권한을 주어야 합니다.
GRANT ALL ON oracleStury TO user2; -- user2에게 테이블 조작 권한 부여
GRANT SELECT ON oracleStury TO user2; -- user2에게 테이블 SELECT 권한 부여
(조작 권한을 주고 싶으면 ALL을 아니면 SELECT 권한만 부여하고 싶으면 SELECT만 사용하시면 됩니다. 둘중하나)
2) 이제 user2가 user1의 oracleStudy 테이블에 접근해보도록 하겠습니다.
SELECT * FROM user1.oracleStudy;
앞에 해당 유저의 이름을 붙여주고 .(점) 테이블 이름을 적어줘야 조회가 가능합니다.(물론 조회권한 필요)
이제 synonym을 사용하여 테이블 이름을 바꿔줍시다.
CREATE SYNONYM u1_oralStudy FOR user1.oracleStudy;
이제 시노님으로 만든 이름을 사용할 수 있게 되었습니다.
SELECT * FROM u1_oralStudy;
위의 user1.oracleStudy 와 u1_oralStudy 의 값이 동일하게 나올것입니다.
출처: https://mine-it-record.tistory.com/68 [나만의 기록들]
-----------------------------------------------------------------------------------------------
[ 작업 내용 - 시노님 및 권한 일괄 부여 ]
B계정에는 실제 테이블 생성 및 전체 데이터 주입하고,
A계정에서 권한만 줘서 조회가 가능하게끔 설정
[A계정] 에서 B의 스키마명 없이 조회 가능
EX ) SELECT * FROM B.테이블; -> SELECT * FROM 테이블;
[대상]
B의 전체 테이블
1. B계정의 테이블 권한 주기
[B계정] 나같은 경우에는 모든 테이블 대상이 었으므로 ..
1) B의 전체 테이블 조회 권한을 A에게 주고 싶은 경우
SELECT 'GRANT SELECT ON B.' || TABLE_NAME || ' TO A;'
FROM ALL_TABLES
WHERE OWNER = 'B';
쿼리 결과를 복사하여 실행한다.
2. SYNONYM 생성
[A 계정]
1) synonym 전체 테이블 전체에 적용
테이블이나 함수명 을 다른 계정에서 접근하기 위해서 계정명.테이블명, 계정명.함수명 으로 접근 하여야 한다.
스키마명 없이 테이블명, 함수명으로 접근하기 위해 SYNONYM을 설정 한다.
( A 계정에서 실행 )
SELECT 'CREATE SYNONYM ' || TABLE_NAME || ' FOR B.'|| TABLE_NAME || ';'
FROM ALL_TABLES
WHERE OWNER = 'B';
( 관리자 계정에서 실행 )
SELECT 'CREATE SYNONYM A.' || TABLE_NAME || ' FOR B.'|| TABLE_NAME || ';'
FROM ALL_TABLES
WHERE OWNER = 'B';
* 이제 (A계정에서 테이블 하나 없더라도 ) SELECT * FROM 테이블명 으로 (B 계정 소유의 테이블에 ) 접근 가능.
-----------------------------------------------------------------------------------------------
A1)
GRANT CREATE SYNONYM TO 'B1'; : (B1에게) 시노님 생성 권한 부여
GRANT SELECT ON A1.TABLE_1 TO B1; : (B1에게) 테이블 접근 권한 부여
TEST) B1
SELECT * FROM A1.TABLE_1;
B1)
CREATE SYNONYM TABLE_OF_A1 FOR A1.TABLE_01;
-> SELECT * FROM TABLE_OF_A1;
'IT > DB' 카테고리의 다른 글
Mysql federated (oracle dblink 와 같은 기능) - 물리적 다른 DB 연결 (0) | 2022.09.02 |
---|---|
오라클 정규식 (REGEXP) (1) | 2021.12.11 |
ORACLE 테이블 복사 (PK, INDEX 까지 복사하는 방법) (0) | 2021.12.11 |
[Oracle/오라클] 권한 부여(GRANT) / 제거(REVOKE) / 조회 / 계정(사용자) 생성[출처] [Oracle/오라클] 권한 부여(GRANT) / 제거(REVOKE) / 조회 / 계정(사용자) 생성|작성자 JOKER (0) | 2021.12.11 |
[참조] SQL Loader사용방법(상세 예시) (0) | 2021.11.18 |