postgreSQL에서의 database, schema, user 권한 정리
postgreSQL 에서 관리하는 database, schema, user 등에 대한 개념을 정리한다.
postgreSQL에서는 크게 database, schema, table 단위로 데이터 그룹이 분리된다.
mySQL 에서는 크게 databse, table 단위로 구분이 되어서 database 안에 table 이 1:n 관계로 묶여있게 되는데, postgreSQL 에서는 schema 라고 하는 단위가 하나 더 추가된다.
postgreSQL 에서도 마찬가지로 database 가 가장 큰 단위로 존재하고 그, database > schema > table 단위로 구분된다.
한 세션은 무조건 하나의 database 에 접속 할 수 있고, 서로 다른 database 의 table 끼리는 데이터 접근이 안된다. 그리고 서로 다른 schema 끼리는 같은 daatabase 라면 접근이 가능하다는 특징이 있다.

기본적으로 database 는 template0, template1, postgres 라는 데이터베이스가 만들어지고, 그 하위 계층에 schema 가 생성된다. schema 는 더 하위인 table 개체 들을 그룹화해서 모아두는데, 동일한 database이더라도 schema 가 다르면 동일한 이름의 table 을 생성할 수 있다. 이런경우를 대비해 schema 에서는 SERACH_PATH 를 설정할 수 있다. 만약 A, B 두 schema 에 동일한 이름의 table 이 존재할 경우, 어떤 table 먼저 조회할지 우선순위를 정의할 수 있다.
생성된 database 에 default 로 public 이라는 schema 가 생성되는데 (따로 지정하지 않은 경우) 이때는 모든 권한을 다 가진 상태여서, 권한 조정이나 user 매핑을 하는 경우 schema 를 설정해줄 필요가 있다.
ref.
https://www.devkuma.com/docs/postgresql/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%8A%A4%ED%82%A4%EB%A7%88-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%98-%EA%B4%80%EA%B3%84/
PostgreSQL | 스키마(Schema) | 데이터베이스, 스키마, 테이블의 관계
PostgreSQL에서는 데이터베이스와 테이블과는 다른 스키마라는 것이 존재한다. 여기에서는 PostgreSQL의 데이터베이스 스키마 및 테이블의 관계에 대해 간략하게 설명한다. PostgreSQL의 데이터베이스
www.devkuma.com
https://velog.io/@easbui/PostgreSQL-%EC%8A%A4%ED%82%A4%EB%A7%88%EC%99%80-%EA%B6%8C%ED%95%9C