* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
|
Linux 64bit |
|
|
11.0 |
|
|
[도움말]-[버전정보] 확인 |
|
|
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
| 에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
| 관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 궁금증이 생겨 문의드립니다.
사용자에게 그룹을 설정(GROUP1)하게 되면 설정한 그룹만 표현되지 않고 그룹(GROUP1)이 소유한 그룹까지 같이 표현되는걸로 보여집니다.
문의
1. 아래의 내용처럼 그룹 상속되는게 맞을까요? 예시1)
2. 상속된 그룹(GRP1)을 drop_member를 이용하여 제거하려고 했으나 제거되지 않습니다.
기존 계정(TEST1)에서 제거하는 방법 말고 TEST2에서 제거할 방법이 있을까요 ?
3. 사용자에게 설정된 그룹을 조회할때 모든 그룹 정보가 다 표현됩니다. 예시2)
이때 상속받은 그룹인지, 본인에게 추가한 그룹인지 확인할 수 있는 쿼리가 있을까요?
예시1 )
1. TEST1 계정의 그룹
+------------+ +----------+ +----------+
| TEST1 | ------> | PUBLIC | | GRP1 |
| (User) | | (Group) | <------+ (Group) |
+------------+ +----------+ +----------+
2. TEST2 계정 생성, GROUP TEST1 지정
+------------+ +------------+
| TEST2 | ------> | TEST1 |
| (User) | | (User/Group)|
+------------+ +------------+
3. TEST2의 그룹 확인
+------------+ +----------+ +------------+ +----------+
| TEST2 | ------> | PUBLIC |------>| TEST1 | ------> | GRP1 |
| (User) | | (Group) | | (User/Group)| | (Group) |
+------------+ +----------+ +------------+ +----------+
SELECT
u.name AS "사용자"
,x.name AS "그룹"
FROM
db_user u,
TABLE(u.groups) AS g(x)
ORDER BY u.name
1. db_user groups는 “직·간접” 모든 그룹, direct_groups는 “직접” 속한 그룹만 담습니다. 그래서 상위(중간) 그룹을 통해 연결된 그룹도 함께 보이는 것이 정상입니다.
2. 상속된 항목만 떼어내는 건 불가합니다. 선택지는 TEST2->TEST1 “직접 멤버십”을 끊거나, TEST1->GRP1 연결을 상위에서 끊는 것입니다.
3. 직접 추가된 그룹과 상속된 그룹을 구분하려면 두 결과를 비교해 groups - direct_groups를 상속분으로 보면 됩니다.
예시)
SELECT u.name AS user_name, x.name AS group_name, y.name AS direct_groups_name
FROM db_user u, TABLE(u.groups) AS g(x), table(u.direct_groups) AS dg(y)
WHERE u.name IN ('TEST1', 'TEST2')
ORDER BY u.name;