본문 바로가기

PostgreSQL

PostgreSQL db, schema, user, role 생성

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/

https://www.postgresql.org/docs/9.0/sql-grant.html