2012-07-11 4 views
0

두 개의 PostgreSQL 서버가 있습니다. 웹 서버 1의 경우 pguser1은 웹 응용 프로그램 작업에 필요한 모든 데이터베이스 객체를 만드는 관련 사용자입니다. 모든 객체가 schema1에 있다고 가정 해 보겠습니다.
마찬가지로 서버 2에서 pguser2은 웹 서버 2에 대한 데이터를 만듭니다.변경된 권한을 가진 데이터베이스 복원

server1에서 스키마 백업 (pgadmin의 백업 창에서 사용자 정의 옵션)을 수행했습니다. server2로 복원 할 때 객체의 모든 권한과 소유권을 pguser2으로하고 아무 것도 pguser1으로 지정하지 마십시오.

어떻게 달성 할 수 있습니까? 가능한 경우 복원 중 옵션 (pg_restore 명령)을 사용하는 것이 좋습니다.

답변

1

비 로그인 역할 (a.k.a. 그룹)에 대한 액세스 권한이 GRANT 인 경우 작업이 매우 단순 해집니다. 이름을 foo_admin으로합시다. 서버 1에서 당신은 서버 2에

GRANT foo_admin TO pguser1; 

REVOKE foo_admin FROM pguser1; 
GRANT foo_admin TO pguser2; 

모든 다. 또는 더 나은 아직 : 덤프 파일을 해킹하고 복원하기 전에 .. 라인

GRANT foo_admin TO pguser1; 

21를 교체합니다. 물론 pguser2을 먼저 만들어야합니다.

지금 바로 확인하십시오, 당신은

ALTER TABLE wuchtel12.game OWNER TO foo_admin; 

에 서버 1에 아무것도를 작성하고 권한을 설정할 때. 스키마 당 특권을 미리 설정할 수 있습니다. 다음과 같음 :

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 
GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES 
TO foo_admin; 

ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 
GRANT SELECT, UPDATE, USAGE ON SEQUENCES 
TO foo_admin; 

이것은 server1과 server2에서 동일하게 작동합니다.
More details and links in this related answer.


또한 보조금 마법사 pgAdmin에 관심이있을 수 있습니다. this related answer