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