RDB$ADMIN角色
内部建的角色RDB$ADMIN出现在每一个数据库中。在数据库中将RDB$ADMIN角色分配给一个普通用户授予该用户 SYSDBA的权限,仅对当前数据库.
当用户登录到常规数据库,提升的特权生效,给予在 RDB$ ADMIN角色之下的在数据库中的所有对象的完全控制权。
在安全数据库中被授予RDB$ADMIN角色授予创建、编辑和删除用户账号权限。
在这两种情况下,用户的权限提升可以将RDB$ADMIN角色分配给其他用户,换句话说,指定 WITH ADMIN OPTION是不必要的,因为它内置的作用.
在安全数据库中授予RDBRDB$ADMIN角色
因为没有人 — — 甚至 SYSDBA — — 也不可以连接到安全数据库,对于这项任务GRANT 和 REVOKE 语句都是没有用的。相反,RDB$ ADMIN 角色授予和撤消使用 SQL 语句用于用户管理:
CREATE USER new_user
PASSWORD 'password'
GRANT ADMIN ROLE
ALTER USER existing_user
GRANT ADMIN ROLE
ALTER USER existing_user
REVOKE ADMIN ROLE
备注
在GRANT和REVOKE中GRANT ADMIN ROLE 和 REVOKE ADMIN ROLE 并不是语句
它们是CREATE USER和ALTER USER语句的三个字参数
表 10.1. RDB$ADMIN角色的 GRANT 和REVOKE参数
参数 | 描述 |
new_user | 使用CREATE USER 指定新的用户的名称 |
existing_user | 使用ALTER USER 指定一个存在的用户名称 |
password | 使用CREATE USER指定新用户的密码,它的理论限制是31个字节,但只有前8个字符被考虑 |
授权者作为一个管理员必须已经登录
参阅: CREATE USER, ALTER USER
使用gsec做同一个任务
替代方法是使用 gsec 与-admin 可以将 RDB$ADMIN属性存储在该用户的记录:
gsec -add new_user -pw password -admin yes
gsec -mo existing_user -admin yes
gsec -mo existing_user -admin no
备注
在调用时可能需要根据当前用户的行政状态,在调用gsec时可能需要更多的参数,例如,-user和-pass,或受信任。
在安全数据库中使用RDBRDB$ADMIN角色
通过SQL管理用户帐户,在连接时授权者必须指定RDB$ADMIN角色。没有用户可以连接到安全数据库,所以解决方案是用户连接到一个常规数据库中,它也有RDB$ADMIN权利,在登录时提供RDB$ADMIN角色在它的登录参数中。这样,它可以提交任何SQL用户管理命令。
用户的SQL通道被堵死了,对于它尚未被授予RDB$ADMIN角色的任何数据库。
使用gsec带上RDB$ADMIN权限
使用gsec执行用户管理,用户必须提供额外的开关——-role rdb$admin。
在常规的数据库中授予RDB$ADMIN角色
在常规数据库中,RDB$ADMIN角色被授予和撤销用通常的语法授予和撤销角色:
GRANT [ROLE] RDB$ADMIN TO username
REVOKE [ROLE] RDB$ADMIN FROM username
为了授予和撤销 RDB$ADMIN角色,授权者必须作为一个管理员已经登录
参阅: GRANT, REVOKE
在常规数据库中使用RDB$ADMIN角色
行使它的 RDB$ADMIN权限,在连接到数据库时授权者只需包含这个角色在连接属性中。
自动管理映射AUTO ADMIN MAPPING
在Firebird数据库2.1中,如果受信任的身份验证被配置为服务器连接,Windows 管理员将自动接收 SYSDBA 权限。在Firebird数据库2.5中,它不再自动接收。 AUTO ADMIN MAPPING的的设置开关现在确定Administrators是否自动有 SYSDBA 权限,基于数据库的数据库的原则。默认情况下,当创建数据库时,它被禁用。
如果AUTO ADMIN MAPPING在这个数据库中是启用的,那么当一个Windows Administrator连接时它将生效.
a.使用受信任的身份验证,且
b.没有规定任何角色
成功的"auto admin"连接后,当前角色设置为RDB$ADMIN。
自动管理映射在常规数据库
启用和禁用自动管理映射在常规数据库
ALTER ROLE RDB$ADMIN
SET AUTO ADMIN MAPPING -- 启用
ALTER ROLE RDB$ADMIN
DROP AUTO ADMIN MAPPING -- 禁用
任一语句必须出具用户具有足够的权限,也就是:
•数据库所有者
•管理员
在常规数据库,AUTO ADMIN MAPPING的状态只有在建连时被检查,如果Administrator因为自动映射是启用当它登录时而拥用了RDB$ADMIN角色,在会话期间它将一直保持这个角色,在此期间即使它或其它用户将关闭了映射。
同样,AUTO ADMIN MAPPING开关的启用也不会改变已经连接的Administrators当前赋予的RDB$ADMIN角色。
自动管理映射在安全数据库
没有 SQL 语句存在在安全数据库中切换自动映射打开和关闭,取而代之,gsec 必须使用:
gsec -mapping set
gsec -mapping drop
可能需要更多的参数,这个依赖使用什么样的登录方式用于连接,例如,-user和-pass,或受信任。
只有SYSDBA可以设置自动映射启用,如果它是禁用的。任何管理员可以终止(禁用)。