2017-09-17 11 views
1

한 웹 사이트에서 HTML 파일 &을 호스팅하고 다른 가상 머신에서 PostgreSQL 데이터베이스를 설정해야합니다.PostgreSQL 사용자에게 특정 권한을 부여하고 취소 할 수 있습니까?

저는 최근에 Postgresql을 설치했으며 공식 Postgresql 문서를 사용하여 데이터베이스를 작성하고 사용자를 생성하고 & 권한을 취소하는 방법을 배웠습니다. mfc_dst라는 이름의 데이터베이스를 생성 한 후

, 나는 4 differents의 사용자를 작성하라는 명령을 내가 문제가있는 곳이다되었습니다

- 첫번째 사용자는 관리자 이름이되어야하고 있어야합니다

기존 사용자 인 postgres 이외의 다른 사용자 만 무제한 사용 권한을 가질 수 있습니다.

년 - 초 만 mfc_dst 데이터베이스의 모든 테이블에UPDATE 권한을 선택합니다 있어야하며 ( 이름) 세 번째 사용자 (CFC 이름).

- 그리고 마지막으로/네 번째 사용자 (이름 교수)는 단지 mfc_dst라는 이름의 데이터베이스에서 본분 라는 이름의 테이블을 볼 수 있어야합니다.

CREATEandGRANT.sql 

REVOKE ALL ON ALL TABLES IN SCHEMA public TO cfc; 
REVOKE ALL ON ALL TABLES IN SCHEMA public TO sec; 
REVOKE ALL ON ALL TABLES IN SCHEMA public TO prof; 

GRANT CONNECT ON DATABASE mfc_dst TO admin; 
GRANT CONNECT ON DATABASE mfc_dst TO cfc; 
GRANT CONNECT ON DATABASE mfc_dst TO sec; 
GRANT CONNECT ON DATABASE mfc_dst TO prof; 

GRANT SELECT,UPDATE 
ON ALL TABLES IN SCHEMA public 
TO cfc; 

GRANT SELECT,UPDATE 
ON ALL TABLES IN SCHEMA public 
TO sec; 

GRANT SELECT ON devoir TO prof; 

이 다른 하나 :

는이를 위해, 나는 2 개의 다른 스크립트 사용이 2 스크립트

REVOKE.sql 

REVOKE ALL ON TABLE professeur FROM PUBLIC; 
REVOKE ALL ON TABLE reserver FROM PUBLIC; 
REVOKE ALL ON TABLE salle FROM PUBLIC; 
REVOKE ALL ON TABLE semaine FROM PUBLIC; 
REVOKE ALL ON TABLE surveiller FROM PUBLIC; 

감사합니다, 나는보고에서 교수라는 이름의 사용자를 방지 할 수 있었다 다른 테이블, 그러나 내가 가진 문제는 cfc, sec 및 prof라는 사용자가 여전히 테이블을 만들 수 있고 세 테이블 모두를 만들 수 있다는 것입니다. 입니다.

가능하지 않은 경우이를 방지하는 방법을 알 수 있습니까? 가능하다면 나중에 새로 만든 사용자가 이러한 권한/권한을 갖지 못하도록 방지 할 수 있습니까?

답변

1

모든 포스트 그레스 사용자 암시 적으로 사전에 감사도 자동으로 그들에게 public 스키마에 대한 모든 권한을 부여하는 public 역할의 구성원입니다. 당신은 또한

revoke all on database mfc_dst from public; 
revoke all on schema public from public; 

으로 public 역할에서 권한을 제거하면 grant 문을 발행 할 수 있도록 public 역할에 더 처리 할 필요없이, 데이터 테이블에 새로운 스키마를 정의하는 고려할 수 있습니다. 이렇게하면 사용자 지정 스키마를 포함하도록 검색 경로를 설정하고 public 스키마를 제외 할 수도 있습니다.

또한 cfcsec 사용자에 대한 그룹 역할을 만들고 해당 사용자에게 개별적으로 권한을 할당 할 수 있습니다. 이렇게하면 향후 유지 보수가 더 쉬워집니다.

+0

감사합니다. 대단히 감사합니다! –