Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
Sql 角色和特权之间的区别是什么_Sql_Oracle_Database Administration - Fatal编程技术网

Sql 角色和特权之间的区别是什么

Sql 角色和特权之间的区别是什么,sql,oracle,database-administration,Sql,Oracle,Database Administration,每个使用我的数据库的用户都有一个角色吗?是否更多的管理员将拥有角色,需要访问所有表的人 此外,我无法为角色提供表级权限,也无法为用户提供表级权限。。这就是行不通。我必须直接向用户提供特权,以便他们工作。这正常吗?我应该能够为角色提供表级权限,还是必须手动为每个用户提供表级权限 每个使用我的数据库的用户都有一个角色吗 这取决于您(或者,我应该说,DBA)如何设置它 很久以前,比如说在Oracle 8i之前,有两个非常流行的角色:connect和resource,所以当DBA创建一个新用户时,他们只

每个使用我的数据库的用户都有一个角色吗?是否更多的管理员将拥有角色,需要访问所有表的人

此外,我无法为角色提供表级权限,也无法为用户提供表级权限。。这就是行不通。我必须直接向用户提供特权,以便他们工作。这正常吗?我应该能够为角色提供表级权限,还是必须手动为每个用户提供表级权限

每个使用我的数据库的用户都有一个角色吗

这取决于您(或者,我应该说,DBA)如何设置它

很久以前,比如说在Oracle 8i之前,有两个非常流行的角色:
connect
resource
,所以当DBA创建一个新用户时,他们只需运行

grant connect, resource to new_user;
新用户
已准备就绪,因为这些角色提供了最需要的特权,如
创建会话
创建表
创建视图
(有关这些角色的更多信息,请查看文档)

然而,事实证明,并非所有人都应该被授予,例如,
create cluster
(这是
connect
的特权之一),因此现在,如果您愿意,您应该创建自己的角色,然后向这些角色授予某些特权,最后向您的用户授予角色

另一个选项是为每个用户保留.sql脚本。该脚本应该分别包含授予这些用户的特权列表,这意味着您不应该授予任何他们并不真正需要的特权


我无法为角色提供表级权限,也无法为用户提供表级权限。这就是行不通。我必须直接向用户提供特权,以便他们工作。这正常吗

它起作用,但不是无处不在。这些特权(通过角色授予的特权)在命名的PL/SQL过程(即存储过程、函数、包)中不起作用。如果您必须在其中使用这些表,是的-您必须直接向每个用户授予特权

与命名的PL/SQL过程相反,通过角色授予的权限将在匿名PL/SQL块或SQL级别上工作


如果您想知道为什么要使用角色,那么答案是我的第一句话:视情况而定。

“用户权限是执行特定类型SQL语句的权限,或访问其他用户对象的权限。权限类型由Oracle定义。另一方面,角色由用户(通常是管理员)创建和用于将权限或其他角色组合在一起。它们是一种方便向用户授予多个权限或角色的方法。”