미션 :: 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 모두 확인 해주어야 하고, 권한이 없으면 해당 권한까지 넘겨 주어야 한다.

+ Recent posts