Конференция "Базы" » Firebird Firedac Пользователь не получает прав роли
 
  • kudatsky (05.01.17 13:02) [0]
    Роль '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;
    Подключение проходит нормально, но пользователь прав роли не имеет. Например, не удаляются строки.
    В чём тут дело ?
  • kudatsky (08.01.17 10:47) [1]
    Я эту задачу то ли решил, то ли обошел.
    Подозреваю, что правильное (или красивое) решение
    выглядит несколько иначе. На всякий случай приведу
    код.
    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 создан.
  • ЯЧтсия (09.01.17 14:47) [2]
    Удалено модератором
  • дон трумп © (11.01.17 11:50) [3]
    Удалено модератором
 
Конференция "Базы" » Firebird Firedac Пользователь не получает прав роли
Есть новые Нет новых   [134427   +34][b:0][p:0]