TL; DR : 새로운 사용자는 public
스키마에 테이블을 만들 수 있습니다 .
기본값을 싫어하는 경우 원하는 초기 구성으로 새 템플릿 데이터베이스를 만들어야합니다. 예를 들어,
DROP SCHEMA public;
또는
REVOKE ALL ON SCHEMA public FROM public;
GRANT USAGE ON SCHEMA public TO public;
템플릿에서.
당신이 원하는 경우 public
데이터베이스에 아무런 권한이 없다하는 사용자, 당신은 추가해야한다 :
REVOKE ALL ON DATABASE mydbname FROM public;
GRANT CONNECT ON DATABASE mydbname TO public;
그래서 것을 public
사용자가 스키마 또는 사용 임시 테이블을 만들 수 없습니다.
개인적으로, 이것을 디자인하는 경우 TEMP
기본적으로 데이터베이스에 대한 권한을 부여 하지만 CREATE
(데이터베이스의 스키마) 또는 CREATE
( public
스키마의 테이블 )은 허용하지 않습니다 . 나는 소유자를 위해 예약합니다.
그들은 오래 전에 만들어진 선택이지만 지금 변경하기는 매우 어렵습니다.
사용자 계정을 생성해야하고 종종 데이터베이스를 생성하기를 원하기 때문에 PostgreSQL을 시작하기가 너무 어렵다는 규칙적인 불만이 있습니다. 왜 자동으로 생성하고 인증 모드로 '신뢰'를하는 것이 쉬운가? postgres
사용자가 기본적으로 비밀번호를 사용 하지 않는 이유는 무엇 postgres
입니까? OS에 존재하는 사용자를 자동 생성하지 않는 이유는 무엇입니까? 기타
신규 사용자에게는 실제 사용성 문제가 있습니다. 특히 대부분의 사람들은 peer
인증이 무엇인지 , 또는 psql
PostgreSQL을 설치 한 후 바로 실행 하면 로그인 한 이름으로 사용자가 없다고 말하는 이유를 모릅니다 .
pg_hba.conf
구성 파일은 지저분 하지만 사용자는 SQL 수준에서 생성됩니다. 이 분할은 사용자를 혼란스럽게합니다.
그러나 많은 것들이 프로젝트가 모든 사람을 행복하게 만들지 않는 안전한 기본값과 쉬운 기본값 사이의 타협입니다.
revoke create on database [databasename] from [username];
하고 DB는 이제 실제로 [username]에 대해서만 읽습니다. 권리? 나는 좋은 Postgres 책을 읽었을 때이 답변으로 다시 돌아올 것입니다 :)