2017-12-28 15 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

私はすでに存在している古いテーブルが作成され、自分で解決策を見つけましたスキーマの権限付与に続いてすべての権限を付与したので、新規ユーザーは作成した表のみを変更できるようになりましたが、新規ユーザーはスキーマを変更できませんでした。他のユーザーによって作成された表を変更することができます。

スキーマ上のGRANT ALL PRIVILEGES schema_name to new_user_name;

GRANT USAGE SCHEMA schema_name to new_user_name;

これは期待通りに機能しました。

関連する問題