是否有可能创建一个Firebird 3用户,该用户可以对给定的数据库进行备份,但是无法以sysdba的身份进行连接,并且无法使用诸如跟踪或查看所有会话环境的功能?
答案 0 :(得分:1)
在Firebird 2.5及更高版本中,您可以向用户授予数据库中的RDB $ ADMIN角色。这将为该用户所有者或SYSDBA在该数据库中的等效权限。
GRANT [ROLE] RDB$ADMIN TO username
另请参阅Firebird 2.5语言参考中的RDB$ADMIN Role。
具有RDB $ ADMIN角色的用户可以备份数据库,前提是已明确指定角色(选项-role
或-ro
)。
如果您认为向用户授予管理员权限可能过多,请考虑可以备份和还原数据库的用户实质上可以对数据库执行任何操作。例如,在还原时更改所有者,或在SYSDBA所在的另一台计算机上进行还原,进行必要的更改(例如授予特权,操作数据等),然后进行备份并还原到原始数据库上。
Firebird 4将引入额外的特权USE_GBAK_UTILITY
,该特权可用于专门授予用户仅执行gbak操作的权限。我的上一点是一个重要的警告:可以备份和还原的用户可以做的事比您想像的还要多。
换句话说,不允许用户备份数据库而不授予他们某种形式的管理员对数据库的控制权。
答案 1 :(得分:0)
gbak只是作为常规连接连接到服务器,并通过常规SELECT语句读取数据,并将其放入备份文件中。您需要指定SYSDBA或数据库所有者的帐户,因为只有这些帐户才能完全访问数据库的所有数据和元数据。
为解决您的问题,您可以使用gbak命令创建批处理文件,并仅向用户授予执行此文件的权限。