Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 查看时授予选择权_Oracle_Select_Database Schema_Grant - Fatal编程技术网

Oracle 查看时授予选择权

Oracle 查看时授予选择权,oracle,select,database-schema,grant,Oracle,Select,Database Schema,Grant,在路上的某个地方出了点问题,我似乎找不出原因。如果这是已经被问到道歉 我的数据库中有3个架构: 科勒德克 本地资讯科技 格本 COLLDESK是我们的主模式,LOCAL_是我们进行本地开发的地方,GERBEN是最终用户(应该只有选择选项) 现在,在我的桌面模式中有一个表叫做GESTIONES。在LOCAL_IT中,我有一个称为ACTIONS的视图。这包含COLLDESK架构中表GESTIONES中的4列。到目前为止还不错 现在我想在视图操作中给GERBEN模式选择权限。但是当我说 grant s

在路上的某个地方出了点问题,我似乎找不出原因。如果这是已经被问到道歉

我的数据库中有3个架构: 科勒德克 本地资讯科技 格本

COLLDESK是我们的主模式,LOCAL_是我们进行本地开发的地方,GERBEN是最终用户(应该只有选择选项)

现在,在我的桌面模式中有一个表叫做GESTIONES。在LOCAL_IT中,我有一个称为ACTIONS的视图。这包含COLLDESK架构中表GESTIONES中的4列。到目前为止还不错

现在我想在视图操作中给GERBEN模式选择权限。但是当我说

grant select on LOCAL_IT.ACTIONS to GERBEN
我得到错误ORA-01720:COLLDESK.GESTIONES的grant选项不存在

现在我尝试将GERBEN select权限授予GESTIONES,但仍然收到错误消息

任何帮助都将不胜感激

问候


Gerben

为视图创建一个公共同义词,然后使用您的授权重试

create public synonym ACTIONS for LOCAL_IT.ACTIONS;

grant select on ACTIONS to GERBEN;

错误消息应该这样写:

ORA-01720:COLLDESK.gestions不存在“授予选项”

下面是它的工作原理:

您有3个模式:

  • Schema1-名为“table1”的表的持有者
  • Schema2-从schema1.table1中选择的视图“view1”的持有者
  • Schema3-用户,从schema2.view1中选择-未在schema1.table1上授予选择权
您可能已完成以下操作:

grant select on schema1.table1 (COLLDESK.GESTIONES) to schema2;
请注意,由于您正在创建一个视图,因此必须将select直接授予schema2,如果select是通过角色授予的,则视图将不起作用

现在您正试图允许第三个模式(schema3)使用视图从schema1读取数据。出于安全目的,永远不允许schema2将数据从schema1访问到第三个schema,即使它可以查看数据。否则这将是一个巨大的安全漏洞

因此,解决方案是,当第三方被授予视图上的select权限时,schema2将能够间接地授予该select权限

解决方案:

grant select on schema1.table1 to schema2 with grant option;
现在,允许schema2将其视图上的select授予第三方:

grant select on schema2.view1 to schema3;
给你:

grant select on COLLDESK.GESTIONED to LOCAL_IT with grant option;
grant select on LOCAL_IT.ACTIONS to GERBEN;
此外:
除非绝对必要,否则避免使用公共视图和公共数据库链接。首先耗尽所有其他选项。

当我尝试运行您的第一个查询时,出现缺少关键字错误。必须更改其他一些内容。我必须运行查询grant select on gestiones to local_it with grant选项,然后才能将select授予GERBEN。谢谢你的帮助,非常感谢!