Управление на потребителите на Firebird
Да: стандартен Delphi 7, FB 2.1
Кой е най-лесният начин за добавяне на потребители във FB, промяна на паролата им и изтриване на потребители?
Кой има примери за стандартни компоненти - ще съм много благодарен!
Странен въпрос. Потребителите се добавят и премахват стандартно:
CREATE USER/ALTER USE и др.
Просто пишете молба и това е.
Версия2.5добави SQL синтаксис за управление на потребителите.
> Pete (15/6/13 23:56) [2]> Във версия 2.5За съжаление не забелязах версията. Моят съвет е, ако е възможно да мигрирате към 2.5, тогава е по-добре да го направите. Ако не можете да го направите, можете да манипулирате потребителите само чрез API на Firebird. За удобство можете да създадете свой собствен UDF и след това да използвате SQL, за да изтеглите съхранени процедури, които ще имат достъп до този UDF. UDF ще използва API на Firebird, за да манипулира потребителите.
> Моят съвет е, ако можете да мигрирате към 2.5, тогава е по-добре да го направите.но кой е най-добрият начин за мигриране? Свързването на FDB файл, генериран под 2.1, е възможно в сървър 2.5, това ще реши ли всички проблеми?
Или е необходимо да се създаде DB под 2.5 и да се изпълнят всички DDL, след което да се налеят данните?
Е, и така като цяло - под 2.5 няма ярки характеристики на проблеми в сравнение с 2.1?
> Pete (16/6/13 01:33 AM) [4]> кой е най-добрият начин за мигриране?2.1 - архивиране 2.5 - възстановяване> под 2.5 няма ярки характеристики на проблемиБележките по изданието са достатъчни за четене.
> Достатъчно е да прочетете бележките по изданието.да, прочетох го. Но има за нови функции. Нищо за несъвместимост. Или проблеми) Може би хората знаят повече
При миграция към някоя от версиите има проблеми с български знациASCII в текстовете на съхранените процедури, ако има такива. Останалата част от миграцията изглежда върви добре.
Опитайте да мигрирате база данни, съдържаща следната процедура:
Ако не можете да прочетете този текст в новата база данни, значи имате проблем. В този случай аз лично ви препоръчвам да скриптирате всички процедури и да ги актуализирате след миграцията.
> Pete (16.06.13 02:04) [7]поправи много грешки относно съвместимостта - ако има проблем с кодирането, тогава gbak -r -fix_fss_metadata http://www.ibase.ru/devinfo/gbak.htm#rparams
Някой знае ли защо свързващите променливи не работят?
q.SQL.Text := "СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ "+editLogin.Text+" ПАРОЛА :user_password" q.ParamByName("user_password").AsString := editPass.Text;
> Pete (6/16/13 20:39) [11]Би било чудесно да посочите кои компоненти за достъп използвате.
DVM, най-стандартните, които са вградени в Delphi: TIBDatabase / TIbQuery и т.н.
Все още не мога да разбера - как все пак да направя система за сигурност.
Тук се стартира нов потребител, правя CREATE USER, той работи от името на SYSDBA. Но имам концепция за право в програмата, която позволява създаване на потребители.
Когато присвоявам това право, правя на потребителя: предоставям RDB$ADMIN на MyUser с администраторска опция Но в същото време, когато този MyUser влезе под неговата роля, той не може да създава потребители. Очевидно трябва да влезете под ролята RDB$ADMIN, но аз имам собствена ролева система и всеки влиза под определена роля "ROLE_STANDART".
Как мога да накарам потребителя да може да създава други потребителски бази данни, но да работи под собствената си роля от моя набор?
Моят съвет - не се опитвайте да изградите система за разграничаване на права, като използвате само firebird - солиднотова е хемороид. Вече описах най-общо как да процедираме, тези решения не са се родили просто така. Вградената система за сигурност ще бъде основата, но е по-добре да направите цялото разграничаване на правата. Мога още веднъж да изложа моето виждане по-подробно.
през сървъра на приложения, който може да нямате междинна връзка, както е обичайно в 3-та връзка, а просто отстрани на стръвта.
Имало едно време, още през 2000 г., на FB конференция, 1000+ (10000+) потребители ми зададоха въпрос във FB. Това клиника ли е? Отговорът беше нещо такова - ако тези потребители са доведени по редовен път - клиника. Прекарайте няколко други през тях, оставете ги.
Е, както беше посъветвано по-горе.
Оттук и всички въпроси - трябва да можете да създадете потребител, който също може да създава потребители. Как да го направим?
SYSDBA може да създава потребители и така (създаване на потребител) дори без никаква роля. Как да дам право на друг акаунт да създава потребители?
> Pete (17.06.13 18:13) [18]> SYSDBA може да създава потребители като този (създайте потребител) > без никаква роля. Как да дадете разрешение на друг акаунт да създаде > потребители?Навремето реших проблема така:
DVM, добре, аз имам различен подход.
Все пак бих искал да науча как да създам потребител, който може да създава други потребители.
> Pete (18.06.13 15:34) [22]> Все пак бих искал да науча как да създам потребител, който > може да създава други потребители.Няма проблем:
Под SYSDBA правите:
ALTER USER TESTUSER GRANT ADMIN ROLE , където TESTUSER е вашият потребител.
Освен това влизате под този потребител, КАТО ЗАДЪЛЖИТЕЛНО ПОСОЧВАТЕ РОЛЯТА: RDB$ADMIN. Той ще има правата, от които се нуждае.
> Пийт (18.06.13 15:34)[22]Всъщност вие вече си отговорихте в [14]; Тази роля има и необходимите права. Ако искате вашата роля да има същите права като RDB$ADMIN, тогава ще трябва да й дадете същите права като RDB$ADMIN.
DVM, бр. Вижте, така че всеки потребител да не присвоява права, тогава след създаването на потребителя му се дава ролята ROLE_STANDART. Всички се свързват под ролята ROLE_STANDART. Е, само за да имате достъп до необходимите API, изгледи и т.н.
Конкретните права вече са определени от вътрешната система от права.
Така че потребителят също се свързва под ROLE_STANDART (как да разбера какви права има преди да се свърже) и как да го направя така, че да може да създаде потребител? Наистина ли няма начин да го направите? Без всякакви повторни връзки.
> Pete (18.06.13 21:26) [26]> Няма ли начин да го направите? > без никакви повторни връзки.не прилича на нищо
> Pete (6/20/13 11:08 AM) [28]> колко странно е това.Е, мисля, че теоретично, разбира се, можете да опитате да дадете на произволна роля правото да създава потребители, но за това тя трябва да има пълен достъп до определен брой системни таблици на Firebird (които не знам точно и не са написани никъде).
DVM, но преди 2.5 изглежда има някакъв API за създаване на потребители. Може би чрез него, доколкото е възможно.
> Pete (6/20/13 11:53 AM) [30]> Може би чрез него, доколкото е възможно.Можете, разбира се, вече писах как по-горе. Необходимо е да се направи СДС.