0

每次我创建一个新视图时,我都必须更改所有人的权限,而且做很多次相同的事情是非常痛苦的。

我还询问是否可以更改我创建视图的数据库中的一些默认选项,以便将权限设置为公共。

谢谢

4

2 回答 2

2

听起来您正在使用 SQL 命名。改用系统命名,这将根据 QCRTAUT 系统值授予公共权限。请参阅Birgitta Hauser 的文章

系统命名的另一个优点是使用作业的库列表来解析不合格的对象引用。通过不硬编码模式名称,而是允许系统根据库列表找到它们,使您的代码能够在不同的环境(例如开发、测试、培训、生产)中工作而无需修改代码,只需运行不同的图书馆列表。因此,您可以将与测试过的代码完全相同的代码安装到生产环境中。

于 2013-11-14T03:47:49.493 回答
1

以下来自V6R1 文档

授权

该语句的授权ID所拥有的权限必须至少包括以下一项:

在架构中创建的权限。有关更多信息,请参阅在架构中创建所需的权限。

行政机关

该语句的授权ID所拥有的权限必须至少包括以下一项:

以下系统权限: *使用创建逻辑文件 (CRTLF) CL 命令 *如果创建视图的库是具有数据字典的 SQL 模式,则更改数据字典 管理权限

该语句的授权ID所拥有的权限还必须至少包括以下一项:

对于通过全查询直接引用或通过全查询中引用的视图间接引用的每个表和视图:表或视图的 SELECT 特权,以及 包含表或视图的库的系统权限 *EXECUTE 管理权限

查看所有权:如果指定了 SQL 名称:

如果存在与创建视图的架构同名的用户配置文件,则视图的所有者就是该用户配置文件。
否则,视图的所有者是执行语句的作业的用户配置文件或组用户配置文件。

如果指定了系统名称,则视图的所有者是执行语句的作业的用户配置文件或组用户配置文件。

查看权限:

如果使用 SQL 名称,则在 *PUBLIC 上创建具有 *EXCLUDE 系统权限的视图。如果使用系统名称,则创建具有 *PUBLIC 权限的视图,该权限由模式的创建权限 (CRTAUT) 参数确定。

如果视图的所有者是组配置文件的成员(GRPPRF 关键字)并且指定了组权限(GRPAUT 关键字),则该组配置文件也将拥有该视图的权限。

所有者始终获得视图的 SELECT 特权 WITH GRANT OPTION 和删除视图的授权。

所有者还可以获得视图的 INSERT、UPDATE 和 DELETE 权限。如果视图不是只读的,那么在新视图上将获得与所有者在全查询的第一个 FROM 子句中标识的表或视图上相同的权限。只有在也可以授予这些权限的派生权限时,才能授予这些权限。

于 2013-11-13T17:57:38.723 回答