2017-12-28 20 views
0

test라는 스키마에 테이블 집합이 있다고 가정 해 봅시다. 이제 INSERT, SELECT, UPDATE 및 DELETE를 수행하기 위해이 스키마에 대한 액세스 권한을 부여해야하는 새 사용자를 원합니다. 이제이 사용자에게 동일한 스키마의 새 테이블을 작성하고 사용자가 작성한 테이블을 변경하는 권한을 부여하려고합니다. 반면에 사용자는 다른 사용자가 작성한 기존 테이블을 변경하면 안됩니다. postgres user.How 이것은 PostgreSQL 9.5.9에서 수행 할 수 있습니다. 요청 된 모든사용자가 PostgreSQL에서 작성한 테이블 만 변경할 수있는 권한을 사용자에게 부여 하시겠습니까?

답변

0

내가 믿습니다 "기본"행동, 예를 들면 다음과 같습니다

t=# create schema s1; 
CREATE SCHEMA 
t=# alter schema s1 owner to u1; 
ALTER SCHEMA 
t=# set role u1; 
SET 
t=> create table s1.t1(i int); 
CREATE TABLE 
t=> reset role; 
RESET 
t=# create user u2; 
CREATE ROLE 
t=# grant all on s1.t1 to u2; 
GRANT 
t=# grant usage on schema s1 to u2; 
GRANT 
t=# set role u2; 
SET 
t=> insert into s1.t1 select 1; 
INSERT 0 1 
t=> alter table s1.t1 add column n int; 
ERROR: must be owner of relation t1 
t=# grant create on schema s1 to u2; 
GRANT 
t=> create table s1.t2 (i int); 
CREATE TABLE 
t=> insert into s1.t2 select 1; 
INSERT 0 1 
t=> alter table s1.t2 add column n int; 
ALTER TABLE 

(수퍼 유저의 권한으로 실행)

0

나 자신에 의해 해결책을 발견, 이미 존재하는 기존의 테이블이 생성됩니다 다른 사용자에 의해 테이블의 소유자가 다른 사용자가 될 것입니다. 이제는 스키마에 대한 권한 부여 사용 권한을 모두 부여 했으므로 새 사용자는 이제 작성한 테이블 만 변경할 수 있습니다. 반면 새 사용자는 없습니다. 다른 사용자가 작성한 테이블을 변경할 수 있습니다.

스키마 ALL에 대한 권한 부여는 schema_name에서 new_user_name으로 변경됩니다.

GRANT USAGE SCHEMA 스키마 이름을 new_user_name으로 변경;

예상대로 작동했습니다.