DB의 특정 스키마에 대한 모든 권한을 PostgreSQL의 그룹 역할에 부여합니다.
PostgreSQL 9.0을 사용하여 "staff"라는 그룹 역할이 특정 스키마의 테이블 에서이 역할에 모든 (또는 특정) 권한을 부여하고 있습니다. 다음 작업 없음
GRANT ALL ON SCHEMA foo TO staff;
GRANT ALL ON DATABASE mydb TO staff;
"staff"의 구성원은 특정 테이블에 대해 모두 권한을 부여 하지 않는 한 "foo"스키마의 인 코드 테이블 또는 (두 번째 명령의 경우) 데이터베이스의 테이블에 대해 SELECT 또는 UPDATE 할 수 없습니다 .
나와 내 사용자의 삶을 더 쉽게 만들 수있는 방법은 무엇입니까?
업데이트 : serverfault.com에서 질문을 통해 알아 .
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO staff;
주어진 스키마의 모든 기존 테이블에 대한 권한을 설정하는 속기를 찾았습니다 . 설명서는 다음을 우선합니다 .
(그러나 뷰 및 외부 테이블
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에 기본 권한 창이 -display 됩니다. FOR ROLE
SQL 펼쳐보기를 복사 할 때 절을 수동으로 조정해야합니다 .
내 대답은 ServerFault.com의 대답과 대응합니다 .
보수적
"모든 권한"을 더 보수적으로 부여하는 것보다 더 보수적으로 부여하는 것보다 시도해 볼 수 있습니다.
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO some_user_;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO some_user_;
public
거기 의 사용은 모든 새 데이터베이스 / 카탈로그에 대해 생성 된 기본 스키마의 이름을 나타냅니다 . 스키마를 생성 한 경우 자신의 이름으로 바꿉니다.
스키마에 대한 액세스
스키마에 액세스하려는 모든 작업에 대해 "사용"권한이 부여됩니다. 사용자가 선택, 삽입, 업데이트 또는 삭제 먼저 사용자에게 스키마에 대한 "사용"권한이 부여됩니다.
Postgres를 처음 사용할 수 없습니다. 기본적으로 모든 데이터베이스에는이라는 첫 번째 스키마가 public
있습니다. 그리고 기본적으로 모든 사용자는 특정 스키마에 대한 "사용"권한이 자동으로 부여됩니다. 추가 스키마를 추가 할 때 명시 적으로 사용 권한을 부여해야합니다.
GRANT USAGE ON SCHEMA some_schema_ TO some_user_ ;
Postgres 문서 에서 발췌 :
스키마의 경우 지정된 스키마에 포함 된 개체에 대한 액세스를 허용합니다 (개체의 한 권한 요구 사항도 있고 가정). 기본적으로 피부 여자는 스키마 내에서 개체를 "조회"할 수 있습니다. 이 권한이 없어도 예를 들어 시스템 테이블을 쿼리하여 개체 이름을 볼 수 있습니다. 또한이 권한을 취소 한 후 기존 백엔드에 이전 에이 조회를 수행 한 명령문이 있습니다.
자세한 내용은 질문, GRANT USAGE ON SCHEMA가 수행하는 작업을 참조하십시오 . . 포스트 그레스 전문가 크레이그 벨소리 의 답변 에 특별한주의를 기울이 십시오 .
기존 개체와 미래
기존에 기존 개체에만 영향을 미칩니다. 나중에 생성하는 테이블 등은 위의 행을 다시 말 때까지 기본 권한을 갖습니다. Erwin Brandstetter 의 다른 답변을 참조하여 주소를 변경하여 개체에 영향을 미칩니다.
'ProgramingTip' 카테고리의 다른 글
이메일에 이미지를 삽입하는 방법 (0) | 2020.10.14 |
---|---|
SQL EXISTS 문은 어떻게 작동 작동합니까? (0) | 2020.10.14 |
onclick () 및 onblur () 주문 문제 (0) | 2020.10.14 |
수입 주문 코딩 표준 (0) | 2020.10.14 |
Android 애플리케이션에 사용자 지정 글꼴을 포함 할 수 있습니까? (0) | 2020.10.14 |