특정 테이블만 사용하도록 유저 권한 주기 0 15 5,466

by 캔디는맛있어 [Oracle 기초] 사용자권한 특정테이블 오라클 [2018.04.04 13:40:12]


질문사항이 있어서 글을 올립니다.

오라클에서 사용자 유저를 생성하는데 생성된 유저는 특정테이블만 사용 가능하도록 권한을 주는 방법이 먼가요??

 

생성할 유저아이디 : PLM

테이블명 : PLMM, PLMU

 

위 조건으로 유저 생성 및 두개의 테이블에 대해서만 모든 권한을 가진 유저아이디 만드는 법즘 공유 부탁드립니다.

감사합니다. 

by 우리집아찌 [2018.04.04 14:08:27]

SYNONYM 걸어주세요. 해당유저의 해당 테이블의 권한을 따로 주면됩니다.

http://www.gurubee.net/lecture/1038


by 캔디는맛있어 [2018.04.04 14:13:23]

해당 유저는 다른테이블은 못걸들고 해당되는 두개의 테이블에 관련되어서

수정,삭제,저장,읽기가 되야되는데.. 시노님으로 안될꺼같은데;;


by 우리집아찌 [2018.04.04 14:30:43]

해당유저가 두개의 테이블만 DML 작업가능하는거 아닌가요?


by 캔디는맛있어 [2018.04.04 14:44:25]

네 맞습니다. 그럼 순서는

 

1. 유저 생성
CREATE USER PML
IDENTIFIED BY PML
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
2. 권한 설정
GRANT ALL ON  PLMM TO PLM;
GRANT ALL ON  PLMU TO PLM;

이렇게 하면 될까요??


by 우리집아찌 [2018.04.04 14:47:46]

다른 유저의 테이블을 보는것 아닌가요?


by 우리집아찌 [2018.04.04 14:39:39]

잘못생각했네요.

시노님주고 grant 주시면 owner명을 따로 쓰실필요없습니다.

http://www.gurubee.net/lecture/1009


by 캔디는맛있어 [2018.04.04 14:47:20]

이해가 안되서 그런데 쿼리와 함께 주석해서 설명즘 달아주시면 안될까요ㅠㅠ


by 우리집아찌 [2018.04.04 14:54:15]
-- USER 생성은 생략했습니다. SCOTT와 HR 유저 두명으로 스크립트 생성했습니다.
-- SCOTT USER 로 로그인
SELECT * FROM JOBS

ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
5행, 15열에서 오류 발생

-- HR USER 로 로그인
GRANT  INSERT , UPDATE , DELETE  ON HR.JOBS TO SCOTT;

Grant을(를) 성공했습니다.

-- SCOTT USER 로 로그인
SELECT * FROM HR.JOBS WHERE ROWNUM <= 5

JOB_ID     JOB_TITLE                           MIN_SALARY MAX_SALARY
---------- ----------------------------------- ---------- ----------
AD_PRES    President                                20080      40000
AD_VP      Administration Vice President            15000      30000
AD_ASST    Administration Assistant                  3000       6000
FI_MGR     Finance Manager                           8200      16000
FI_ACCOUNT Accountant                                4200       9000

CREATE SYNONYM SCOTT.JOBS  FOR  HR.JOBS

Synonym SCOTT.JOBS이(가) 생성되었습니다.

SELECT * FROM JOBS WHERE ROWNUM <= 5

JOB_ID     JOB_TITLE                           MIN_SALARY MAX_SALARY
---------- ----------------------------------- ---------- ----------
AD_PRES    President                                20080      40000
AD_VP      Administration Vice President            15000      30000
AD_ASST    Administration Assistant                  3000       6000
FI_MGR     Finance Manager                           8200      16000
FI_ACCOUNT Accountant                                4200       9000

 


by 캔디는맛있어 [2018.04.04 15:13:31]

VIEW 테이블 같은 경우는 어떻게 처리해야하나요??

 

똑같이 

GRANT SELECT ON  PLMU TO PLM;

주니깐 ORA-01720에러 떠서 기존 테이블에도

GRANT SELECT ON VNGL TO PLM;

했는데도 에러가 ㅠㅠ


by 마농 [2018.04.04 15:04:21]

사용자는 보통 자기 테이블만 관리 할 수 있습니다.
해당 유저에 해당 테이블 2개 생성한다면(자기 테이블이라면) 별도 권한 관리 필요 없어 보입니다.
만약 다른 유저의 테이블이라면? 권한 부여를 통해 제어하시면 됩니다.


by 캔디는맛있어 [2018.04.04 15:22:22]

권한 부여 중입니다.
테이블 같은 경우 권한 부여가 되었는데
VIEW 같은 경우 권한 부여가 안되어서요

 

작업내역은
1. GRANT SELECT ON  PLMU TO PLM;

 > ORA-01720에러 발생

2. GRANT SELECT ON VNGL TO PLM;
3. GRANT SELECT ON  PLMU TO PLM;

 > ORA-01720에러 발생

이렇게 1~3번작업을 했는데도 
똑같은 에러떠서 화가 나네요 ㅋㅋ


by 마농 [2018.04.04 15:31:41]

1. 작업자ID, 권한부여할ID, 권한부여받을ID 등을 명확하게 구별하세요.
  - 작업할 테이블/뷰 의 오너는 누구인지?
  - 어떤ID 로 접속하여 어떤 명령을 수행하는지?
2. ORA-01720
  - A 의 뷰를 B 가 권한 받고 이 뷰를 다시 B 가 C 에게 권한 부여하려면?
  - B 는 A 로부터 권한 받을 때 WITH GRANT OPTION 을 이용해 권한 받아야 합니다.


by 캔디는맛있어 [2018.04.05 09:02:36]

혹시 다른 계정에는 테이블의 몇몇 컬럼만 보이게 하는 기능도 있나요???
뷰는 아무리 해도 안되길레;;;


by 마농 [2018.04.05 09:07:18]

뷰로 하시면 됩니다.
안되는게 아니라 못하는것 같습니다.
6하원칙에 의해 명확하게 설명해 주시면 코드 적어드릴 수 있습니다.
질문이 불분명하여 코드를 적어드리지 못하고 대략적인 설명만 하는 것입니다.


by 우리집아찌 [2018.04.04 16:14:07]

GRANT SELECT ON 뷰오너.VNGL TO PLM WITH GRANT OPTION ;

아니시면 VNGL원래 뷰에다가 GRANT 주세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입