我有一個Firebird 3資料庫。我創建了一個新的用戶,NATO。然后我創建了一個新的角色,Cash。在資料庫表上,這個角色有權限。包含這些表的查詢作業正常,但當我從這些表中創建視圖(v_goods)時,它沒有權限,我得到了錯誤:
沒有權限選擇訪問視圖v_goods.
CREATE USER NATO;
創建角色cash。
GRANT CASH TO NATO;
GRANT SELECT ON TABLE V_GOODS TO CASH;
Connection1.DriverName :='FB'。
Connection1.Params.Add('port=3050'/span>)。
Connection1.Params.Add('protocol=TCPIP')。
Connection1.Params.Add('CharacterSet=UTF8')。
Connection1.Params.Add('Server= SERVER-EDEL')。
Connection1.Params.Add('Database=D:DirectDllBase_TMG.fdb')。
Connection1.Params.Add('User_name=NATO')。
Connection1.Params.Add('Password=***')。
Connection1.Params.Add('sql_role_name=Cash'); // USER_Role) ;
Connection1.Connected := True;
v_Goods.Connection:=Connection1;
v_Goods.Open。
如果我在視圖上授予特殊用戶PUBLIC的權限
GRANT SELECT ON TABLE V_GOODS TO CASH
那么視圖作業正常,但在這種情況下,每個認證的用戶(無論是否有這個角色)都可以打開視圖。如果我撤銷了用戶PUBLIC的權限,那么我得到這個錯誤。
uj5u.com熱心網友回復:
根據FireDAC檔案,角色的適當屬性是RoleName,而不是sql_role_name。因此,您目前可能沒有指定一個角色。
你可以通過在你的 Delphi 應用程式中執行 select CURRENT_ROLE from RDB$DATABASE 來驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316504.html
標籤:
