반응형
보기에서 CURRENT_ROLE 사용
MariaDB를 사용하고 있으며 현재 설정된 역할을 기준으로 기존 사용자 테이블의 출력을 제한하는 것이 보관 대상입니다. (일반 사용자는 자신의 데이터만 보고, 팀 리더는 팀원의 데이터를 보고, 관리자는 모든 데이터를 볼 수 있습니다.)
SELECT * FROM USERS WHERE user = session_user() or current_role() = 'CEO'
이는 문으로는 잘 작동하지만 USER() 대 SESSION_USER()의 문제와 유사한 뷰 정의에서는 작동하지 않습니다.
이 문제를 해결할 방법이 있습니까?저는 또한 완전히 다른 접근법에도 개방적입니다.고마워.
information_schema.enabled_roles도 사용할 수 없습니다.
다음 단계를 통해 근본적인 문제를 재현할 수 있습니다. 역할 '최고경영자', 역할 '최고경영자를 설정합니다.
Current_ROLE();—> 'CEO'를 선택합니다.
CREATE VIEW 테스트 역할 AS SELECT Current_ROLE();
테스트 역할에서 *를 선택합니다.
--> NULL
완전히 부여된 권한을 가진 사용자에 의해 실행됩니다.
당신은 아주 오래된 버전을 사용하고 있는 것처럼 보입니다.이 문제는 오래 전에 해결되었습니다.
CREATE SQL SECURITY INVOKER VIEW test_view AS
SELECT USER(), CURRENT_ROLE()
잘 작동합니다.
언급URL : https://stackoverflow.com/questions/75373630/usage-current-role-in-view
반응형
'itsource' 카테고리의 다른 글
런타임 오류:이 이벤트 루프가 python에서 이미 실행되고 있습니다. (0) | 2023.09.04 |
---|---|
C#에서 문자열의 새 줄을 잘라내는 가장 쉬운 방법은 무엇입니까? (0) | 2023.09.04 |
jQuery: 부모, 부모 ID를 가져오시겠습니까? (0) | 2023.09.04 |
동일한 데이터 유형에도 불구하고 "외부 키 제약 조건이 잘못 형성됨" (0) | 2023.09.04 |
SQL 오류: ORA-02298: 유효성을 검사할 수 없습니다(SYSTEM).AEROPUTO_FK) - 상위 키를 찾을 수 없음 (0) | 2023.09.04 |