1

我正在尝试设置一个新角色,以便更轻松地授予访问权限。我想知道是否有一种更简单的方法可以将模式下的所有表(新创建的表应该可以自动访问)上的选择提供给选定的用户。我针对相同的问题进行了以下查询。但是我的用户仍然无法访问特定的表。

CREATE ROLE myrole;

GRANT SELECT ON myschema.mytable TO myrole;

GRANT usage ON schema myschema TO myrole;

CREATE USER mytest1 identified BY '***';

GRANT myrole TO mytest1;

之后,当我使用 mytest1 用户登录并尝试在 myschema.mytable 上运行 select 时,它要求我将架构的使用权限授予用户。在我直接将架构的使用权限授予用户后,该表的权限被拒绝而失败。

请帮忙。我在 vertica 5.0 上运行

更新: 我发现您还必须将该角色设为默认角色或明确将该角色设置为用户会话的默认角色,以使角色生效。

ALTER USER mytest1 DEFAULT ROLE myrole;

但是,我的另一个问题仍然存在,即如何使特定用户可以访问模式下的所有表。

4

1 回答 1

1

根据 Vertica SQL Reference Manual.pdf(第 725 页)(文档版本 5.0 - 用于页码)

GRANT (Schema)
...
USAGE
Allows the user  access to the objects contained  within the 
schema. This allows the user to look up objects within the 
schema. Note that the user must also be granted access to the
individual objects. See the GRANT TABLE (page 727) ... .

the user must also be granted access to the individual objects意味着你也GRANT table需要。

我使用的两个是GRANT SELECTGRANT REFERENCES它允许用户在查询中运行查询和连接(引用)表。

例子:

GRANT SELECT ON TABLE [schema].[Table1] TO myUser;
GRANT SELECT ON TABLE [schema].[Table2] TO myUser;
GRANT REFERENCES ON TABLE [schema].[Table1] TO myUser;
GRANT REFERENCES ON TABLE [schema].[Table2] TO myUser;
...

6.0 文档参考GRANT SCHEMA(第 808 页)和GRANT TABLE(第 813 页)。

于 2012-08-27T21:48:55.403 回答