我需要创建一个新的 firebird-db 用户,它只能访问 4 个特定的表。有办法做到吗?
http://www.destructor.de/firebird/gsec.htm在这方面并没有真正的帮助。
您链接的第三方gsec文档不提供有关授予表权限的信息,因为gsec仅用于管理安全数据库中的用户。在 Firebird 中,用户的权限是使用
GRANT
(和 REVOKE
)语句在各个数据库中管理的(甚至可以向(尚)不存在的用户授予权限)。请注意,Firebird 3 已弃用 gsec,从 Firebird 2.5 开始,建议使用 SQL 用户管理语句而不是 gsec。
您需要创建用户,然后授予用户对您想要的表的权限。请参阅 Firebird 2.5 语言参考中的安全章节。
经过身份验证的常规用户对任何数据库对象没有任何权限 直到明确授予该个人用户或 绑定为 PUBLIC 用户的所有用户。
具体:
创建用户:
create user <username> password '<password>';
CREATE USER
;要创建用户,您需要是 SYSDBA,或者您需要具有安全数据库中的 admin 角色以及当前数据库中的 RDB$ADMIN 角色,并在连接时指定 RDB$ADMIN 角色来登录。
授予用户必要的权限。例如授予 SELECT 权限:
grant select on table <tablename> to user <username>;
允许选择、插入、更新和删除:
grant select, insert, update, delete on table <tablename> to user <username>;
GRANT
;要授予对象权限,您必须是 SYSDBA(该对象的所有者)、当前数据库中的 RDB$ADMIN,或者已被授予带有 WITH GRANT OPTION
的权限。
当您需要向多个用户授予同一组权限时,最好先向角色授予权限,然后再将该角色授予用户。然而,在 Firebird 3 及更早版本中,要获得授予角色的权限,用户需要在连接时显式指定该角色(Firebird 4 引入了自动应用的default角色)。