无法授予表权限

Syn*_*sso 4 postgresql

我已获得 postgres 数据库的凭据,并被告知它有权创建新用户并授予他们访问表的权限。这句话只对了一半。

我想创建一个新用户:

create user foo login encrypted password 'bar';
commit;
Run Code Online (Sandbox Code Playgroud)

还行吧。现在我尝试向该用户授予对所选表的某些特定访问权限:

grant select, insert, update on table baz to foo;
Run Code Online (Sandbox Code Playgroud)

回应是[42501] ERROR: permission denied for relation baz

似乎我被授予的该用户无法从我希望授予访问权限的表中进行选择。select * from baz还给出了 42501 错误。

该查询select distinct(grantor) from information_schema.role_table_grants;返回一个用户名(我们称之为“bob”)。我应该与鲍勃讨论获得我需要的权限吗?

Cra*_*ger 6

据猜测,您的用户不是表的所有者,也没有被授予对它们的权限,WITH GRANT OPTION因此可以委派它们。

数据库管理员必须执行以下操作:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser WITH GRANT OPTION
Run Code Online (Sandbox Code Playgroud)

并且可能还应该GRANTSEQUENCEs、对其本身的模式等具有类似的权利。

WITH GRANT OPTION使用户myuser有权依次将GRANT分配给其他人的权利。

详细信息请参阅手册

你也可能对此有兴趣ALTER DEFAULT PRIVILEGES