2015-12-03 45 views
0

我需要为用户授予对象特权,但我不是模式的所有者。 我试过用系统用户做它,但我不能。 我的远景是使用Sys用户(除System以外),但它已停用,并且我无法使用我的用户激活它。向SAP用户授予对象权限Hana

有什么办法给予用户这个特权?我不能要求架构的所有者这样做,因为她今天辞职了......我不想改变她的数据库用户的密码。

我知道在某些时候我需要创建一个新的DBAdmin用户并创建这些模式的备份,因为当我的同事的SAP用户被删除时,它将删除Hana用户和DB用户所有创建和授予的对象,角色和特权。

回答

1

哦,哦! 在此删除用户时要非常小心,因为 - 正如您正确写入的那样 - 删除将产生层叠效应。

另外: 您必须拥有对象的所有权或您希望授予grant选项的特权。 使用SYSTEM用户对此无能为力,SYS永远无法用于登录数据库。

既然没有办法接管所有权,唯一的实际方法的确是找出用户创建/执行的对象和权限。

然后登录到用户并将授权重构为覆盖对象权限的角色。 作为下一步,您可以考虑创建一个非登录用户来拥有这些对象,然后执行用户对象的导入/导出。

最后,您可以创建具有所需对象权限的设计时角色。这允许具有ROLE ADMIN特权的用户授予/撤销特权,这使管理变得更容易和更好地结构化。

+0

嘿拉斯,感谢您的回答。你能告诉我如何找到用户创建的对象和用户授予他人的权限?我找不到任何带有该信息的表格。 – JuanC

1

肯定的:

( 
SELECT "SCHEMA_NAME", 
'' AS "OBJECT_NAME", 
'SCHEMA' AS "OBJECT_TYPE", "SCHEMA_OWNER" as "OWNER_NAME" 
FROM "PUBLIC"."SCHEMAS" 
WHERE SCHEMA_OWNER = 'A' UNION ALL 

SELECT "SCHEMA_NAME", "OBJECT_NAME", 
"OBJECT_TYPE", "OWNER_NAME" FROM "PUBLIC"."OWNERSHIP" 
WHERE 
"SCHEMA_NAME" IN 
(SELECT "SCHEMA_NAME" from "PUBLIC"."SCHEMAS" 
WHERE "SCHEMA_OWNER" = 'A') OR "OWNER_NAME" = 'A' 
) ORDER BY "SCHEMA_NAME" ASC, "OBJECT_NAME" ASC; 

你觉得这和许多其他有用的东西在SAP HANA的书,我写道:https://www.sap-press.com/sap-hana-administration_3506/

+0

你真棒...我会看看它。 – JuanC