发出哪些 SQL 语句来使这些授权存在于字典中,并且每个用户都执行了它?



执行时:

SELECT grantee,owner,table_name,grantor, privilege, grantable
FROM user_tabs_privs;
|**Grantee |    Owner|  Table_Name| Grantor |Privilege| Grantable**|
|----------|---------|------------|---------|---------|------------|
|MEGAN     |EMILY    |SALES       | ADAM    |SELECT   |NO          |
|----------|---------|------------|---------|---------|------------|    
|JO        |EMILY    |EMP         | EMILY   |DELETE   |NO          |
|----------|---------|------------|---------|---------|------------|    
|ADAM      |EMILY    |SALES       | EMILY   |SELECT   |YES         |
|----------|---------|------------|---------|---------|------------|

从表的一行中,您可以检索语句:

作为用户grantor问题

GRANT privilege ON owner.table_name TO grantee;

如果grantable为"否"。

GRANT privilege ON owner.table_name TO grantee WITH GRANT OPTION;

如果grantable为"是"。

但人们不知道当时发表了一份声明。

用户可以授予对象的权限,owner.table_name他是对象的所有者 - 如果该权限是通过授予选项授予他的,则用户也可以授予对对象的权限。

由此得出以下可能的语句序列。

--as user Emily
GRANT select ON emily.sales TO adam WITH GRANT OPTION;
GRANT delete ON emily.sales TO jo;
-- as user adam
GRANT select ON emily.sales TO megan;

这些表授权的语法很简单:

GRANT privilege ON table TO user (WITH GRANT OPTION)

例如,对于底部记录,Emily授予Adam在销售表上的SELECT权限,WITH GRANT OPTION(这样他就可以将其授予其他人,就像他在第一张记录中所做的那样):

GRANT SELECT ON Sales TO Adam WITH GRANT OPTION

最新更新