Firebird Role Question & Delphi 7

8 отговора 177 прегледа
#1

Firebird Role Question & Delphi 7

Здравейте,

интересуваме някои сблъсквал ли се е с подобно нещо.

Имам База данни (Firebird - ска) в нея имам създадени 5 роли. Добавям Програмно потребители посредством TSecurityService. До тук ситуацията е бомба, но идва кофти момента: Трябва да задам на всеки потребител каква роля може да приема. Видях къде пише тези работи Firebirda ( в системната таблица RDB$user_privileges). Използвайки TIBSQL връзвам userite(добавям запис в таблицата) с определена роля, но когато се опитам да махна роля на даден потребител(изтрия запис от горепосочената таблица) Firebird ми казва че нямам права (а съм SYSDBA). Tоест крайния ефект е че на потребител мога да добавям роля, но не мога да махна такава. (да оставим факта че си "омазах" базата 2 пъти за 1 час).
Та питането ми е: няма ли компонент(нещо като ТSecurityService) за тази работа (стандартен май няма) или друг метод за реализиране на тези неща - не ми се бърка директно в системните таблици на Firebird.

Моля, помогнете

Благодаря предварително.

Отговор
в отговор на Vermax #2

Re: Firebird Role Question & Delphi 7

Grant и Revoke ще ти свършат работа.
GRANT {rolename [, rolename ...]} TO {PUBLIC
| {[USER] username [, [USER] username ...]} } [WITH ADMIN OPTION];
REVOKE <rolename FROM username;
Вж. SQL Roles: Users and Security in InterBase
И ако позволиш един съвет: Никога не пиши в системните таблици, ако ти е мила базата.
Вярно е и другото: Никога не казвай "никога"

Редактирано от NDeu на

Отговор
в отговор на NDeu #3

Re: Firebird Role Question &amp; Delphi 7

Благодаря за идеята.

наистина не е много зравословно да се пипа по системните таблици , оба4е TSecurityService не поддържа булгарица .
Както и да е. там се оправих.
Утре ще пробвам идеиката. Grant мисля 4е работи, но за Revoke мисля че нямам права, а съм администратор. Някакви идеи?
Може и базата да ми е омазана. Ще пробвам и ще пиша пак.

Отговор
в отговор на Vermax #4

Re: Firebird Role Question &amp; Delphi 7

Малеее това приложениице ме върна в трети клас .

GRANT и REVOKE наистина са полезни(10х NDeu). Обаче като се опитам да дам права на Потребител за някаква Роля (GRANT GUEST TO PESHO примерно) в КОНЗОЛА РАБОТИ, а от моето приложение ми дава "SYSDBA nas no permission to grant SQL role GUEST to user PESHO" (Ако SYSDBA няма правя - аз ли да имам ).

Някакви нстройки ли има???
Help. Това приложениице ме взема за мезе

Отговор
в отговор на Vermax #5

Re: Firebird Role Question &amp; Delphi 7

Напредък

не е достатъчно да си SYSDBA трябва опцията WITH GRANT OPTION на SYSDBA за всяка роля да е сетната иначе казва че няма права.
и все пак имам още проблеми с REVOKE - не да ва грешка но не работи

Отговор
в отговор на Vermax #6

Re: Firebird Role Question &amp; Delphi 7

Какво значи "не работи"?
Ако не се лъжа (сега не ми се проверява) юзера си има правата, които са му дадени когато се е логнал. Ако смениш нещо по ролята, то ще се отрази чак след новото логване на юзера.

Отговор
в отговор на Vermax #7

Re: Firebird Role Question &amp; Delphi 7

Не работи е твърде общо понятие
Да не би да имаш предвид, че ролята си остава в базата. За да я махнеш от базата - Drop-ни я

Отговор
в отговор на NDeu #8

Re: Firebird Role Question &amp; Delphi 7

наистина проблема ми е доста "тънък" явно.

под неработи имам предвид:

Revoke Guest From Ivan (където Guest e rolq а Ivan e потребител)/* примерно се опитам да махна роля на потребител*/ Така написано това в конзола работи от моето приложение НЕ ДАВА грашка, но не маха и ролята на потребителя. Отворил съм базата като SYSDBA, а той е собственик на всичко в базата (Роли, таблици, вюта....) Дори WITH ADMIN Option му указах за всички роли.

Докато: GRANT Guest to IVAN работи перфектно както от приложението така и от конзола.

След толкоз опити вече си нямам и идея къде е проблема.

Отговор
в отговор на Vermax #9

Re: Firebird Role Question &amp; Delphi 7

Blagodarq na vsi4ki.
Podhoda e pravilen.

Raboti perfektno.

Отговор