Как задать привилегии на определённых пользователей

Как защититься от хаков, спрятать БД и прочие премудрости и настройки

Модератор: kdv

Ответить
alpha5
Сообщения: 1
Зарегистрирован: 02 июн 2006, 01:21

Как задать привилегии на определённых пользователей

Сообщение alpha5 » 02 июн 2006, 01:35

Здравствуйте!
Помогите, пожалуйста, разобраться с такой проблемой:
я создал нового пользователя "admin".
Затем я в базе данных создал роль "ADMINISTRATOR" и назначил ей привилегию:

Код: Выделить всё

grant ALL on "ABONENT" to "ADMINISTRATOR" WITH GRANT OPTION;
После этого я пишу в программе:

Код: Выделить всё

Datamodule1.IBDatabase1.Connected := false;
DataModule1.IBDatabase1.Params.Clear;
Datamodule1.IBDatabase1.Params.Add('lc_ctype=WIN1251');
Datamodule1.IBDatabase1.Params.Add('user_name=' + EdLogin.Text); // логин
Datamodule1.IBDatabase1.Params.Add('password=' + EdPassword.Text); // пароль
if EdLogin.Text = 'admin' then
  Datamodule1.IBDatabase1.Params.Add('sql_role_name=administrator');
Datamodule1.IBDatabase1.Connected := true;
И после этого при обновлении набора данных у меня выскакивает ОШИБКА:
no permission for read/select access to table ABONENT
тип ошибки: EIBInterBaseRoleError.


:?: Помогите пожалуйста разобраться, почему нельзя ничего делать с этой таблицей?

:?: И как ещё можно созданным пользователям (которые хранятся в файле isc4.gdb), задавать привилегии на

определённые таблицы в БД?

Заранее благодарю!

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 02 июн 2006, 09:00

А ты админу разрешил исполнять эту роль?
grant administrator to user admin

Все разрешения даются грантами. Роли это "предопределенные" пачки грантов.

Ответить