* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Linux Red Hat 8.6 |
|
11.2.2.0705 |
|
10.2.0.0001 |
|
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
운영중인 DB 테이블의 select 권한만 필요한 계정이 하나 필요하여 아래와 같이 작업을 했습니다.
기존 소유자 : aaa로 가정
신규 사용자 : bbb로 가정
권한 주려는 테이블 : tb_test로 가정
1. dba 계정으로 접속하여
CREATE USER bbb PASSWORD 'bbb';
-> 정상 실행
GRANT SELECT ON aaa.tb_test TO bbb;
-> 정상 실행
2. 생성된 사용자 bbb로 접속하여
SELECT COUNT(1) FROM tb_test;
-> Unknown class "bbb.tb_test". 로 시작하는 오류 발생 (질의 실행 실패)
SELECT COUNT(1) FROM aaa.tb_test;
-> 정상 실행
select 쿼리 실행시 소유자를 입력하지 않은 경우 테이블을 찾지 못해 오류가 발생하고 있습니다.
혹시나 싶어 11.0 버전으로 운영중인 다른 db에도 테스트 해보았으나 해당 db는 별도 소유자를 입력하지 않아도 select가 정상 작동하고 있습니다.
확인해보면 두 DB 모두 테이블 소유자 계정이 특별히 dba 권한을 갖고 있거나 하지는 않은 일반 계정입니다.
DB의 문제인지, 제가 설정상 누락한 부분이 있는지,
아니면 jdbc 드라이버 문제인지 원인을 잘 모르겠어서 문의 드립니다.
현재 큐브리드 매니저에서 사용중인 jdbc 드라이버는 11.1.0.0027 버전입니다.
답변 부탁드립니다. 감사합니다.
그래서, 다른 user의 테이블명을 참조하시려면 반드시 user명을 table명과 함깨 사용해야 합니다.
11.2 이전 버전처럼 다른 user의 table을 참조시 table명만을 사용하고 싶으신 경우에는 11.2에서는 동의어(synonym)을 사용하셔야 합니다.
synonym에 대한 자세한 정보는 매뉴얼(https://www.cubrid.org/manual/ko/11.2/sql/schema/synonym_stmt.html)을 참조하시면 됩니다.
올려주신 시나리오에서 아래처럼 synonym을 추가 후 수행해보세요..
- bbb user 로그인
- create synonym tb_test for aaa.tb_test;
- select count(*) from tb_test;