复制现有用户的Sybase权限?

时间:2012-07-17 13:55:25

标签: permissions sybase

如何将所有现有Sybase用户的权限复制到新帐户?例如,某些表只有select权限,许多proc具有执行权限等。原始帐户对数十个数据库对象中的几十个表和几个存储过程的访问权限有限。

1 个答案:

答案 0 :(得分:1)

如果要多次执行此操作:创建角色,为角色授予权限,并将用户分配给该角色。

如果审核谁在数据库中执行的操作并不重要:将新用户别名为数据库中的旧用户

sp_dropuser 'NEW_USERNAME'
go
sp_addalias 'NEW_USERNAME', 'EXISTING_USERNAME'
go

sp_helprotect EXISTING_USERNAME将打印出该用户的权限列表。您可以捕获该输出并使用它将这些权限添加到新帐户。

以下步骤需要编辑系统表,请务必小心,以免破坏您的系统。确保您有良好的备份。 *

用户权限存储在sysprotects表中。从理论上讲,你应该能够:

  1. 创建新用户登录
  2. 将用户添加到数据库
  3. 添加任何角色或别名
  4. 从sysprotects中选择uid = EXISTING_USER_ID到临时表的权限。
  5. 更新临时表并将uid从EXISTING_USER更改为NEW_USER的uid
  6. 使用sp_configure允许更新系统表
  7. 使用更新的临时表将记录插入sysprotects
  8. 使用sp_configure禁止更新系统表
  9. 免责声明请在生产服务器上尝试之前对其进行测试,因为我没有对其进行测试以验证其是否有效。