PostgreSQL을 설치하면 default user로 postgres가 생성되며 superuser 권한을 가진다.
여기에 database를 생성하면 default schema로 public schema가 생성되며 모든 user가 객체를 생성할 수 있다.
따라서 user가 public schema에서 객체를 생성할 수 없도록 하고 신규 database와 schema를 생성해보자.
# public schema revoke
revoke all privileges on schema public FROM public;
# user 생성
create user {user} with password '{password}';
# db 생성
create database {database} owner {user};
# db에 schema 생성
create schema {schema} authorization {user};
# role 생성
create role {role};
# schema에 읽기 권한 주기
grant usage on schema {schema} to {role};
# 테이블에 crud 권한 주기
grant select, insert, update, delete on all tables in schema {schema} to {role};
# sequences 권한 주기
grant select on all sequences in schema {schema} to {role};
# connect 권한 주기
grant connect on database {database} to {role};
# user에게 role 주기
grant {role} to {user};
references
postgresqltutorial.com/postgresql-administration/psql-commands/
'PostgreSQL' 카테고리의 다른 글
permission denied for sequence 오류 날 때 sequence 권한주기 (0) | 2023.02.16 |
---|