Firebird3角色CASH获v_goods查询授权后用户NATO访问仍无权限问题
Firebird 3视图访问权限问题解决方案
原因说明
该问题通常由两个核心原因导致:角色未正确激活,或者权限链路配置不完整。
修复步骤
- 修正连接参数中的角色名大小写
Firebird 未加双引号创建的元数据默认以大写形式存储,你当前连接参数中sql_role_name=Cash大小写不匹配,会导致CASH角色未被当前会话激活,将连接参数调整为:
Connection1.Params.Add('sql_role_name=CASH');
- 补全权限配置
使用SYSDBA或数据库所有者账号执行以下SQL,确保权限完整:
- 确认CASH角色已持有视图依赖所有基础表的SELECT权限:
-- 替换下方的基础表名,多张表重复执行即可 GRANT SELECT ON 基础表名 TO CASH;
- 为CASH角色授予视图的SELECT权限:
GRANT SELECT ON V_GOODS TO CASH;
- 验证角色激活状态
连接建立后执行以下SQL,确认当前会话已正确激活CASH角色:
SELECT CURRENT_ROLE FROM RDB$DATABASE;
如果返回值为CASH说明配置生效,此时访问视图即可正常返回结果。
内容的提问来源于stack exchange,提问作者basti
相关产品推荐
相关产品推荐

