![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Многопользовательность в БД [D7, IB6.x]
Inkotex © (2003-05-05 19:34:00)Может кто подскажет как реалезовать правильно(нормально) в interbase многопользовательский доступ к БД с заданием разных уровней доступа к даным?
Спасибо
Inkotex (2003-05-06 00:00:00) [21]Тут мне тогда не понятен один момент
Когда я через IBConsole сделал несколько юзеров, потом в самой базе сделал несколько ролей.
Как мне сделать чтоб я задал(привязал) какому юзеру соответствует какая роль, и он только вводил свое им’я и пароль. тоесть с одного компютера можна иметь разные права доступа в зависимости от имени пользоватиля. А так я понимаю что с одного компютера(рабочего места) разные пользователи будут заходить под своим именем но под ролю котораю зашита в PARAMS даного екземпляра прогамы.
Или я опять чевото не догоняю.
Спасибо зарания.
Zacho (2003-05-05 23:40:00) [22]
> Inkotex (05.05.03 23:25)
Именно это и правильно. Если подключаешься без указания роли - действуют права пользователя, если с указанием роли - права роли. Честно говоря не понял, в чем проблема. И плюнь на стандартый LoginPrompt, сделай свой диалог подключения к базе, с выбором (вводом) роли если надо.
Inkotex (2003-05-05 23:25:00) [23]Zacho ето я и делаю и типа все работает, но есть одна загвоздка с какой я не могу розобратся:
Сделал я всю базу в Interbase под пользоватилем SYSDBA
Когда я ставлю LoginPromt:=true програма відает запрос на логин тут все легко SYSDBA сделал базу он ее хозяин он имеет полный доступ. Тепер как ты описал сделал роль God со всеми правами как у SYSDBA (Grant ALL to my_table to god with admin option)
В Interbase сделал нового юзера VASYA,
Присвоил VASYA роль God Grant god to Vasya
Запускаю програму конекчусь к базе под логином VASYA выдает ошибку нет доступа типа нет прав на обзор, удаление ... и т.д
Тепер принудительно в IBDATABESE ставлю в PARAMS role_name:=God
все работает но етож не правильно. Как с каими параметрами мне конектится к базе чтоб динамически подключались изеры к существующим ролям. немогу понять к де ето задается?
\Спасибо
Zacho (2003-05-05 23:17:00) [24]Еще могу дать небольшой совет:
Попробуй все это проделать в IB Expert"е - там есть довольно удобные Менеджер пользователей и Менеджер прав. А потом просто извлеки метаданные базы и посмотри как это выглядит на SQL.
Zacho (2003-05-05 23:04:00) [25]
> Inkotex (05.05.03 22:31)
А примеры есть в Data Definition Guide - довольно простые и понятные даже при слабом знании английского.
Ну вот простой пример. Предположим, есть таблица MY_TABLE. Создаем роль "SOME_ROLE": CREATE ROLE SOME_ROLE
Даем ей все права на MY_TABLE: GRANT ALL ON MY_TABLE TO SOME_ROLE
Даем пользователю "VASYA" право на эту роль: GRANT SOME_ROLE TO VASYA
После этого если пользователь VASYA подключится к БД с ролью SOME_ROLE то у него будут права на чтение, удаление, вствку и изменение данных в таблице MY_TABLE
Если не получится, напиши более подробно, что делаешь и что получаешь в результате.
Inkotex (2003-05-05 22:31:00) [26]Zacho большое спасибо. Правда то что ты описал в первом сообщение оно и не получается, но буду пытатся разобратся. Всеровно спасибо (может у тебя есть пример?)
Zacho (2003-05-05 22:08:00) [27]Еще немного добавлю. Для нормальной многопользовательской работы с БД кроме разграничения прав доступа к обьектам БД еще очень важно правильно разработать стратегию использования транзакций при конкуррентном доступе к данным. По этому вопросу читай статьи на http://www.ibase.ru/develop.htmраздел "Транзакции, архитектура IB"
Zacho (2003-05-05 21:49:00) [28]
> Inkotex (05.05.03 20:23)
Причем здесь Дельфи ? И никакого глюка в IB нет, а если бы и был, то "средствами Delphi ето решить" просто невозможно :-) Напиши как делаешь с примером.
Кратко, схема действий такая. Создаешь роли (CREATE ROLE), даешь им нужные права на объекты БД (GRANT .. ON .. TO rolename), даешь права определенным юзерам подключаться с определенными ролями (GRANT rolename TO userlist). Читай главу "Planning Security" в Data Definition Guide (сейчас под рукой нет, так что название главы пишу по памяти, могу немного и ошибиться) - там все подробно и с примерами, и Language Reference -Chapter 2 "SQL Statement and Function Reference" про CREATE ROLE, GRANT, REVOKE и т.п. Еще посмотри статьи на http://www.ibase.ru- там тоже что-то было на эту тему.
Inkotex (2003-05-05 20:23:00) [29]Проблема в том что при связывании пользователя с ролями в InterBase ничего не происходит(нету доступа), может быть ето глюк Interbase? Может кто подскажет как средствами Delphi ето решить. Может кто примечик подкинет?
Спасибо
Desdechado (2003-05-05 20:17:00) [30]домены из другой оперы
а вот роли и просто пользователи могут иметь разные права через GRANT на доступ к таблицам, вьюхам, процедурам и пр.
читай LanguageReference
MsGuns (2003-05-05 20:11:00) [31]Роли, домены,..