Firebird数据库
Firebird数据库语言参考-RDB$ADMIN角色
2016-05-23 14:22:09

 

内部建的角色RDB$ADMIN出现在每一个数据库中。在数据库中将RDB$ADMIN角色分配给一个普通用户授予该用户 SYSDBA的权限,仅对当前数据库.

 

当用户登录到常规数据库,提升的特权生效,给予在 RDB$ ADMIN角色之下的在数据库中的所有对象的完全控制权。

 

在安全数据库中被授予RDB$ADMIN角色授予创建、编辑和删除用户账号权限。

 

在这两种情况下,用户的权限提升可以将RDB$ADMIN角色分配给其他用户,换句话说,指定 WITH ADMIN OPTION是不必要的,因为它内置的作用.

 

在安全数据库中授予RDBRDB$ADMIN角色

 

因为没有人 — — 甚至 SYSDBA — — 也不可以连接到安全数据库,对于这项任务GRANT 和 REVOKE 语句都是没有用的。相反,RDB$ ADMIN 角色授予和撤消使用 SQL 语句用于用户管理:


 

 


 


 

 

 

 

表 10.1.  RDB$ADMIN角色的 GRANT 和REVOKE参数

 

 

授权者作为一个管理员必须已经登录

 

参阅: CREATE USER, ALTER USER

 

 

替代方法是使用 gsec 与-admin 可以将 RDB$ADMIN属性存储在该用户的记录:

 



 

 

 

 

通过SQL管理用户帐户,在连接时授权者必须指定RDB$ADMIN角色。没有用户可以连接到安全数据库,所以解决方案是用户连接到一个常规数据库中,它也有RDB$ADMIN权利,在登录时提供RDB$ADMIN角色在它的登录参数中。这样,它可以提交任何SQL用户管理命令。

 

用户的SQL通道被堵死了,对于它尚未被授予RDB$ADMIN角色的任何数据库。

 


使用gsec执行用户管理,用户必须提供额外的开关——-role rdb$admin。

 


在常规数据库中,RDB$ADMIN角色被授予和撤销用通常的语法授予和撤销角色:

 

 

 

为了授予和撤销 RDB$ADMIN角色,授权者必须作为一个管理员已经登录

 

参阅: GRANT, REVOKE

 

 

行使它的 RDB$ADMIN权限,在连接到数据库时授权者只需包含这个角色在连接属性中。

 

 

在Firebird数据库2.1中,如果受信任的身份验证被配置为服务器连接,Windows 管理员将自动接收 SYSDBA 权限。在Firebird数据库2.5中,它不再自动接收。 AUTO ADMIN MAPPING的的设置开关现在确定Administrators是否自动有 SYSDBA 权限,基于数据库的数据库的原则。默认情况下,当创建数据库时,它被禁用。

 

如果AUTO ADMIN MAPPING在这个数据库中是启用的,那么当一个Windows Administrator连接时它将生效.

 

a.使用受信任的身份验证,且
b.没有规定任何角色

 

成功的"auto admin"连接后,当前角色设置为RDB$ADMIN。

 

 

启用和禁用自动管理映射在常规数据库

 


 


 

任一语句必须出具用户具有足够的权限,也就是:

 

•数据库所有者
•管理员

 

在常规数据库,AUTO ADMIN MAPPING的状态只有在建连时被检查,如果Administrator因为自动映射是启用当它登录时而拥用了RDB$ADMIN角色,在会话期间它将一直保持这个角色,在此期间即使它或其它用户将关闭了映射。

同样,AUTO ADMIN MAPPING开关的启用也不会改变已经连接的Administrators当前赋予的RDB$ADMIN角色。

 

 

没有 SQL 语句存在在安全数据库中切换自动映射打开和关闭,取而代之,gsec 必须使用:

 

       gsec -mapping set

       gsec -mapping drop

 

可能需要更多的参数,这个依赖使用什么样的登录方式用于连接,例如,-user和-pass,或受信任。

 

只有SYSDBA可以设置自动映射启用,如果它是禁用的。任何管理员可以终止(禁用)。