Oracle 如果我给用户表特权,我还需要给他们数据库角色吗
我有一个数据库,希望提供角色和权限 我的目标是允许多个用户(所有用户都具有相同的权限)能够创建、编辑和查看表(仅此而已) 我知道有一些用户表特权允许用户创建、更改、删除和删除表中的项目。但我也明白有一个Oracle 如果我给用户表特权,我还需要给他们数据库角色吗,oracle,security,sqlplus,user-roles,database-security,Oracle,Security,Sqlplus,User Roles,Database Security,我有一个数据库,希望提供角色和权限 我的目标是允许多个用户(所有用户都具有相同的权限)能够创建、编辑和查看表(仅此而已) 我知道有一些用户表特权允许用户创建、更改、删除和删除表中的项目。但我也明白有一个 资源用户允许用户执行相同操作的预定义角色 我会提供这两个角色吗?表级权限和预定义角色?如果我两者都提供,会发生什么?我可以吗?这更像是一个数据库管理问题,因为您有开发自己表的用户。而您问题的核心,“一刀切”的角色资源或者更好为您的用户群定制的解决方案实际上是管理风格、品味和您的特殊情况 就个人而
资源用户
允许用户执行相同操作的预定义角色
我会提供这两个角色吗?表级权限和预定义角色?如果我两者都提供,会发生什么?我可以吗?这更像是一个数据库管理问题,因为您有开发自己表的用户。而您问题的核心,“一刀切”的角色
资源或者更好为您的用户群定制的解决方案实际上是管理风格、品味和您的特殊情况
就个人而言,我不喜欢角色RESOURCE
,因为它缺少特权CREATE VIEW
请注意,权限创建表
(直接授予或通过角色授予)允许用户在自己的架构中创建表。要在其他模式(或“数据库上的所有表”)中创建表,您需要特权创建任何表
。有关详细信息,请参见。您能否澄清在本文中“更改”和“删除”的含义alter
和drop
是DDL命令,可用于修改表的结构或从数据库中删除表。这些不是对象级权限,与表中的行不相关。你真的是说“选择、插入、更新和删除表中的行”吗?不同的数据库产品有不同的组织方式。在Oracle中,每个用户都拥有一个“模式”(他们自己创建的所有表、索引、过程等)。用户通常(但不总是!)被授予对自己模式的广泛权限,而对其他人模式的权限很少。您希望“所有”用户能够在哪里编辑和查看表?每个都在自己的模式中,或者您希望为“通用”对象创建一个“通用”模式,并仅为用户授予该模式中对象的权限?但如果我为用户提供资源用户角色,这不允许用户更改数据库中的所有表吗?允许用户更改所有表是一个巨大的安全风险。你到底为什么会考虑允许DBA以外的任何人这样做呢?老实说,问题更多的是“我能不能”——比如它会不会产生一个不同类型的问题(或者我应该)。我只是觉得奇怪为什么会有角色和表权限,所以如果我向用户提供资源用户角色,这难道不允许用户更改数据库中的所有表吗,那么拥有表级权限又有什么意义呢?