방법
-- 임시 사용자 생성
create user <사용자 명> with password '<비밀번호>';
-- 사용자의 DB 접근 허용
GRANT CONNECT ON DATABASE <DB 명> TO <사용자 명>;
-- 스키마 내의 테이블 생성 및 사용 허용
GRANT CREATE, USAGE ON SCHEMA <스키마 명> TO <사용자 명>;
-- 현재 <스키마 명>에 존재하는 테이블에 대한 권한 설정
GRANT ALL ON ALL TABLES IN SCHEMA <스키마 명> TO <사용자 명>;
-- 미래에 생성될 테이블에 대한 권한 설정
ALTER DEFAULT PRIVILEGES FOR ROLE <사용자 명> IN SCHEMA <스키마명>
GRANT ALL ON TABLES TO <사용자 명>;
-- 참고: 조금 상세하게 지정하고 싶으면 아래처럼하세요
-- ALTER DEFAULT PRIVILEGES FOR ROLE <사용자 명> IN SCHEMA <스키마명>
-- GRANT SELECT, DELETE, UPDATE, INSERT, REFERENCES, TRIGGER, TRUNCATE
-- ON TABLES TO <사용자 명>;
-- 이외에도 시퀀스에 대한 권한 설정
GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES
IN SCHEMA <스키마 명>
TO <사용자 명>;
ALTER DEFAULT PRIVILEGES FOR ROLE <사용자 명> IN SCHEMA <스키마 명>
GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO <사용자 명>;
참고링크:
- https://www.postgresql.org/docs/current/sql-grant.html
- https://www.postgresql.org/docs/current/sql-alterdefaultprivileges.html
- https://www.postgresqltutorial.com/postgresql-administration/postgresql-grant/
- https://dba.stackexchange.com/questions/135168/alter-default-privileges-for-role
- https://dba.stackexchange.com/questions/117109/how-to-manage-default-privileges-for-users-on-a-database-vs-schema/117661#117661
- GRANT 와 ALTER DEFAULT PREVILEGES 차이점