권한 관련 질문 드립니다.
postgresql 에 testDB 라는 DB가 있고 A, B 유저가 있습니다.
그리고 testDB 안에는 schema_A라는 스키마가 있고 그 안에 table_a, table_ b, table_c 라는 테이블들이 있습니다.
이때, testDB 의 schema_A스키마에 있는 table_b 테이블만 B라는 유저가 select 가능하게 권한을 주려합니다.
testDB를 슈퍼유저로 접속해서
testDB=# GRANT USAGE ON SCHEMA schema_A TO B;
testDB=# grant select on schema_A.table_b to B;
이렇게 주고 testDB를 B류저로 접속해서 아래와 같이 search_path잡아줍니다.
testDB=> ALTER USER B SET search_path TO "$user", schema_A, public;
이렇게 해주고 testDB를 B유저로 재 접속 하고 \dt로 보면
table_a, table_b, table_c 세 테이블이 전부 보이게 되고 이중에 table_b 테이블만 select * from table_b; 가 가능하고
다른 두 테이블은 불가능하게 됩니다.
여기서 제가 원하는것은
testDB를 B유저로 접속해서 \dt로 봤을때 부터 table_b 테이블만 보이고 다른 두 테이블은 안보이게 하고싶은데요,
위에 주황색 쿼리에서 usage권한을 스키마가 아닌 table_b라는 테이블에게만 주는 방식으로 바꿔야 할것같은데
방법을 모르겠습니다.
아시는분 계신가요?
|