-
Роль 'OPERATOR' имеет все права во всех таблицах. Новый пользователь создаётся кодом: Sec: TFDIBSecurity; ... Sec.AUserName := 'USER111'; Sec.APassword := '12345'; Sec.AFirstName := 'AF12345'; Sec.ALastName := 'AL12345'; Sec.ARoleName:='OPERATOR'; Sec.AddUser; Но если посмотреть через IBexpert, то USER111 не становится членом роли OPERATOR. Далее подключаюсь к БД кодом procedure TForm1.Connection; var Params: TStrings; begin Params := TStringList.Create; try Params.Add('DriverID=FB'); Params.Add('Server=127.0.0.1'); Params.Add('Database=J:\SHMNEK.FDB'); Params.Add('User_Name=USER112'); Params.Add('Password=12345'); Params.Add('Protocol=local'); Params.Add('RoleName=OPERATOR'); Params.Add('SQLDialect=3'); Params.Add('CharacterSet=WIN1251'); FDManager.AddConnectionDef('ShmNEK', 'FB', Params); FDConnection1.ConnectionDefName := 'ShmNEK'; FDManager.Open; FDConnection1.Connected := True finally FreeAndNil(Params) end; end; Подключение проходит нормально, но пользователь прав роли не имеет. Например, не удаляются строки. В чём тут дело ?
-
Я эту задачу то ли решил, то ли обошел. Подозреваю, что правильное (или красивое) решение выглядит несколько иначе. На всякий случай приведу код. 1. Создаём пользователя Sec: TFDIBSecurity; ... Sec.AUserName := 'USER111'; Sec.APassword := '12345'; Sec.AFirstName := 'AF12345'; Sec.ALastName := 'AL12345'; Sec.AddUser;
2. Присваиваем пользователю права DB: TFDConnection; В поле DB.Params должно быть: Database=D:\SHMNEK.FDB User_Name=sysdba Password=masterkey Server=127.0.0.1 RoleName=OPERATOR DriverID=FB
Выполним код DB.Open(); FDQuery1.SQL.Text:='grant OPERATOR to USER111'; FDQuery1.Execute; FDQuery1.Close;
Пользователь с правами роли OPERATOR создан.
-
Удалено модератором
-
Удалено модератором
|