Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Firebird Firedac Пользователь не получает прав роли


kudatsky   (05.01.17 13:02

Роль '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]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо