goG*_*Gud 2 sql firebird rights
我试过,但所有时间都失败了在firebird数据库中显示和设置用户权限.我用了 ;
GSEC>显示
但它只显示用户名.我希望看到所有权利,我想设置它们.我们可以做这样的选择和管理吗?
问候,
Firebird gsec实用程序仅管理全局安全数据库(security2.fdbFirebird 2.0及更高版本)中的用户及其密码.每个数据库(用户除外SYSDBA)管理用户的权限,无法管理gsec.
每个数据库用户权限由定义角色(可选),为角色和/或用户分配权限以及为特定数据库中的用户分配角色来控制.分配给角色的权限仅在附加时指定角色时应用,否则仅应用用户权限.
分配权利是用GRANT和完成的REVOKE.有关详细信息,请查看Firebird 3 语言参考章节Firebird 3发行说明和/或Interbase 6.0操作指南,第5章数据库安全性,Interbase 6.0语言参考和Interbase 6.0数据定义指南中记录的Firebird 3的安全性和更改(均为可以从与操作指南相同的位置下载,以及Firebird语言参考更新中记录的更改.
要显示数据库中授予的当前权限,可以使用isql工具命令show grants.您需要连接到您想要其信息的特定数据库.对于其他工具或普通客户端连接,您需要自己查询系统表(特别是RDB$USER_PRIVILEGES),或使用工具的功能(例如,Flamerobin也可以显示权限).
如果未授予任何权限(仅SYSDBA表示数据库所有者拥有权限),show grants;则将输出:
SQL> show grants;
There is no privilege granted in this database
Run Code Online (Sandbox Code Playgroud)
例如,假设我有表ITEMS,我授予SELECT角色权限TESTROLE,输出将是:
SQL> CREATE ROLE TestRole;
SQL> GRANT SELECT ON ITEMS TO TestRole;
SQL> SHOW GRANTS;
/* Grant permissions for this database */
GRANT SELECT ON ITEMS TO ROLE TESTROLE
Run Code Online (Sandbox Code Playgroud)
现在,如果我还分配其他UPDATE权利:
SQL> GRANT UPDATE ON ITEMS TO TestRole;
SQL> SHOW GRANTS;
/* Grant permissions for this database */
GRANT SELECT, UPDATE ON ITEMS TO ROLE TESTROLE
SQL>
Run Code Online (Sandbox Code Playgroud)
如果您查询系统表,RDB$USER_PRIVILEGES您将看到下面的列表(+更多数据库所有者的权限):
USER GRANTOR PRIVILEGE GRANT_OPTION RELATION_NAME FIELD_NAME USER_TYPE OBJECT_TYPE
----------------------------------------------------------------------------------------
TESTROLE SYSDBA S 0 ITEMS [null] 13 0
TESTROLE SYSDBA U 0 ITEMS [null] 13 0
Run Code Online (Sandbox Code Playgroud)
(RDB$为简洁起见,从列名中省略了前缀)
RDB$USER是接收权限的对象的名称.这TESTROLE是一个角色(由列RDB$USER_TYPE值13 表示).RDB$GRANTOR 是授予权利的用户.RDB$PRIVILEGE 是授予的权利
S: SELECT U: UPDATED: DELETEI: INSERTR:( REFERENCE用于创建引用指定表(或特定列)的外键)X:( EXECUTE对于存储过程,也可能是UDF)RDB$GRANT_OPTION:: 1用户可以授予其他用户权限0(有时NULL),用户无法授予此权限RDB$RELATION_NAME:表(或其他数据库对象)的名称RDB$FIELD_NAME:表中列的名称(NULL表示为所有列授予权限)RDB$USER_TYPE:RDB$USER列的对象类型(13是角色,8普通用户,其他对象类型也是可能的,例如授予存储过程的权限)RDB$OBJECT_TYPE:对象类型RDB$RELATION_NAME(例如0:Relation,普通表).可以从中获取完整的对象类型列表RDB$TYPES(这并不意味着可以在所有对象类型上授予权限).查看文档以获取详细信息.