问题描述
我需要创建一个只能访问 4 个特定表的新 firebird-db 用户。有没有办法做到这一点?
http://www.destructor.de/firebird/gsec.htm 在这方面并没有真正的帮助。
解决方法
您链接的 - 第三方 - gsec 文档未提供有关授予表权限的信息,因为 gsec 仅用于管理安全数据库中的用户。在 Firebird 中,使用 GRANT
(和 REVOKE
)语句在各个数据库中管理用户的权限(甚至可以将权限授予(还)不存在的用户)。请注意,Firebird 3 已弃用 gsec,从 Firebird 2.5 开始,建议使用 SQL 用户管理语句而不是 gsec。
您需要创建用户,然后将用户权限授予您想要的表。请参阅 Firebird 2.5 语言参考中的 Security 章节。
普通的、经过身份验证的用户没有任何数据库对象的权限 直到明确授予该个人用户或 给绑定为用户 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 将引入自动应用的角色)。