GRANT 권한 주기. SEARCH_PATH 세팅. (postgreSQL)
미션 :: user1계정의 test_tbl 테이블을 user2계정에 SELECT 권한 주기.
1) 테이블 SELECT 권한 주기
GRANT SELECT ON TABLE user1.test_tbl TO user2
=> user2 계정으로 접속해서, SELECT * FROM test_tbl; 를 돌려보니, test_tbl 테이블을 찾지 못하는 오류 발생.
2) 스키마 접근 권한 주기
GRANT USAGE ON SCHEMA user1 TO user2;
=> 여전히 test_tbl 테이블을 찾지 못함.
3) SEARCH_PATH 세팅
show search_path; // 현재 search_path 확인
SET search_path TO user2, user1, public
=> SELECT * FROM test_tbl; 정상 조회 가능.
※ search_path 관련 참고사항
- serach_path는 입력된 순서대로 테이블 스페이스를 읽는다.
- 영구적으로 설정해주기 위해서는 postgresql.conf 파일에 search_path를 명시해주어야 한다.
1) SELECT name, setting FROM pg_settings WHERE category = 'File Locations'; //postgresql.conf 파일 찾기
2) postgresql.conf 파일에 search_path='user2, user1, public' 명시
★ 결론
GRANT 권한 줄 때, 테이블 SELECT 권한만 주면 끝나는 것이 아니기 때문에,
스키마 권한, search_path 모두 확인 해주어야 하고, 권한이 없으면 해당 권한까지 넘겨 주어야 한다.
'DB' 카테고리의 다른 글
PostgreSQL에서 not equal 시 null 값 포함하여 처리하기(IS DISTINCT FROM) (0) | 2019.10.14 |
---|---|
postgreSQL에서 그룹별 넘버링 방법 ( ROW_NUMBER, RANK, DENSE_RANK ) (0) | 2019.03.13 |