주어진 스키마의 모든 기존 테이블에 대한 권한을 설정하는 속기를 찾았습니다 . 설명서는 다음을 명확히합니다 .
(그러나 뷰 및 외부 테이블ALL TABLES
을 포함 하는 것으로 간주됩니다 ).
대담하게 강조합니다. serial
열은 nextval()
열 기본값으로 시퀀스에서 구현되며 설명서를 인용합니다 .
시퀀스의 경우이 권한으로 currval
및 nextval
함수를 사용할 수 있습니다.
따라서 serial
열 이있는 경우 시퀀스 에 대해 부여 USAGE
(또는 ALL PRIVILEGES
) 할 수도 있습니다.
GRANT USAGE ON ALL SEQUENCES IN SCHEMA foo TO mygrp;
참고 : Postgres 10 이상의 ID 열 은 추가 권한이 필요하지 않은 암시 적 시퀀스를 사용합니다. ( serial
열 업그레이드를 고려하십시오 .)
무엇에 대한 새로운 객체?
DEFAULT PRIVILEGES
사용자 또는 스키마 에도 관심이 있습니다 .
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT ALL PRIVILEGES ON TABLES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo GRANT USAGE ON SEQUENCES TO staff;
ALTER DEFAULT PRIVILEGES IN SCHEMA foo REVOKE ...;
이렇게하면 향후 생성되는 개체에 대한 권한이 자동으로 설정되지만 기존 개체에 대한 권한은 설정되지 않습니다.
기본 권한은 대상 사용자 ( )가 생성 한 객체 에만 적용됩니다 FOR ROLE my_creating_role
. 해당 절이 생략되면 기본값은를 실행하는 현재 사용자 ALTER DEFAULT PRIVILEGES
입니다. 명시 적으로 :
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo GRANT ...;
ALTER DEFAULT PRIVILEGES FOR ROLE my_creating_role IN SCHEMA foo REVOKE ...;
또한 pgAdmin III의 모든 버전에는 미묘한 버그 가 있으며 현재 역할에 적용되지 않더라도 SQL 창에 기본 권한이 표시 됩니다. FOR ROLE
SQL 스크립트를 복사 할 때 절을 수동으로 조정해야합니다 .