非 SYSDBA 和非数据库所有者的 Firebird 3 备份?
Firebird 3 backup by non SYSDBA and non DB owner?
是否可以创建一个 Firebird 3 用户,该用户可以对给定数据库进行备份,但不能以 sysdba 身份连接并使用诸如跟踪或查看所有会话环境之类的东西?
gbak只是作为常规连接连接到服务器并通过常规SELECT语句读取数据,并将它们放入备份文件中。您需要指定 SYSDBA 或数据库所有者的帐户,因为只有这些帐户才能完全访问数据库的所有数据和元数据。
作为您问题的解决方案,您可以使用 gbak 命令创建一个批处理文件,并只授予用户执行该文件的权限。
在 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 操作。我之前的观点是一个重要的警告:可以备份和恢复的用户可以做的比你想象的要多。
换句话说,允许用户备份数据库而不授予他们对数据库的某种形式的管理员控制权是不可能的。
是否可以创建一个 Firebird 3 用户,该用户可以对给定数据库进行备份,但不能以 sysdba 身份连接并使用诸如跟踪或查看所有会话环境之类的东西?
gbak只是作为常规连接连接到服务器并通过常规SELECT语句读取数据,并将它们放入备份文件中。您需要指定 SYSDBA 或数据库所有者的帐户,因为只有这些帐户才能完全访问数据库的所有数据和元数据。
作为您问题的解决方案,您可以使用 gbak 命令创建一个批处理文件,并只授予用户执行该文件的权限。
在 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 操作。我之前的观点是一个重要的警告:可以备份和恢复的用户可以做的比你想象的要多。
换句话说,允许用户备份数据库而不授予他们对数据库的某种形式的管理员控制权是不可能的。