Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

пользователей InterBase   Найти похожие ветки 

 
marsello   (2003-01-27 18:35) [0]

Как программно зарегистрировать пользователей InterBase в сервере ?


 
Victor_Cr ©   (2003-01-27 19:35) [1]

Запускаешь из командной строки утилиту gsec.exe с параметрами:

gsec utility - maintains user password database

command line usage:
>gsec [ <options> ... ] -<command> [ <parameter> ... ]

interactive usage:
>gsec [ <options> ... ]
GSEC> <command> [ <parameter> ... ]
...

available options:
-user <database administrator name>
-password <database administrator password>
-role <database administrator SQL role name>
-database <security database>
-z

available commands:
adding a new user:
add <name> [ <parameter> ... ]
deleting a current user:
delete <name>
displaying all users:
display
displaying one user:
display <name>
modifying a user"s parameters:
modify <name> <parameter> [ <parameter> ... ]
help:
? (interactive only)
help
displaying version number:
z (interactive only)
quit interactive session:
quit (interactive only)

available parameters:
-pw <password>
-uid <uid>
-gid <uid>
-proj <projectname>
-org <organizationname>
-fname <firstname>
-mname <middlename>
-lname <lastname>


 
marsello   (2003-01-28 08:57) [2]

Я что то не разобрался, например?
"C:\Program Files\....\bin\gsec.exe/ ? "
? - что должно здесь быть?


 
Reindeer Moss Eater   (2003-01-28 09:00) [3]

То, что и написано. Символ вопросительного знака.


 
Dmitry W.   (2003-01-28 09:27) [4]

программно - это вообще говоря не с помощью некой программы.
Иначе проще все делать в каком-нибудь менеджере. :)

На вкладке IBX или Fib+ есть специальные компоненты Security
которые и предназначены для опреаций с ISC4.


 
Николай В.   (2003-01-28 10:27) [5]

Мне кажется, что можно сделать так. Написать хр. процедуру на сервере, которая добавляла бы юзера в базу, использующая для этого встроенные возможности этого SQL-сервера. А в Delphi уже написать интерфейс к этой процедуре, то есть, клиентика, через которого передавались бы параметры этой процедуре.


 
id_privin ©   (2003-01-28 10:42) [6]

Мы долго страдали, а потом решили этот вопрос так :

procedure LoadFunctions;
begin
LIB := GetModuleHandle(IBASE_DLL);
if LIB = 0 then
raise Exception.Create(IBASE_DLL + " isn""t in memory");

isc_add_user := GetProcAddress(LIB, "isc_add_user");
if @isc_add_user = nil then
raise Exception.Create("can""t load add_user");

isc_delete_user := GetProcAddress(LIB, "isc_delete_user");
if @isc_delete_user = nil then
raise Exception.Create("can""t load delete_user");

isc_modify_user := GetProcAddress(LIB, "isc_modify_user");
if @isc_modify_user = nil then
raise Exception.Create("can""t load modify_user");
end;

procedure FillUserData(const Session: TIBDatabase; var UserData: TUserSecData);

function GetParam(name: string; Params: TStrings): string;
begin
Result:= Params.Values[name];
end;

var
P: integer;
begin
with Session do begin
UserData.dba_user_name := StringToPChar(GetParam("user_name", Params));
UserData.dba_password := StringToPChar(GetParam("password", Params));

if Trim(UserData.dba_password) = "" then
raise
Exception.Create("DBA password required. Provide password parameter for connection");

P := Pos(":", DatabaseName);
if P > 2 then begin
UserData.protocol := sec_protocol_tcpip;
UserData.server := StringToPChar(copy(DatabaseName, 1, p - 1));
end else if Pos("\\", DatabaseName) = 1 then begin
UserData.protocol := sec_protocol_netbeui;
P := Pos("\", Copy(DatabaseName, 3, length(DatabaseName)));
UserData.server := StringToPChar(copy(DatabaseName, 3, p - 1));
end else begin
P := Pos("@", DatabaseName);
if P > 0 then begin
UserData.protocol := sec_protocol_spx;
UserData.server := StringToPChar(copy(DatabaseName, 1, p - 1));
end else begin
UserData.protocol := sec_protocol_local;
UserData.server := "";
end;
end;
end;
UserData.sec_flags := UserData.sec_flags
or sec_server_spec
or sec_dba_user_name_spec
or sec_dba_password_spec;
end;

procedure TIBUser.InBaseCreate(UserName, password: string);
var
UserData: TUserSecData;
begin
FillChar(UserData, Sizeof(TUserSecData), 0);
IsReady;

UserData.sec_flags := sec_password_spec;
UserData.user_name := StringToPChar(UserName);
UserData.password := StringToPChar(password);
FillUserData(Session, UserData);

if not FunctionsLoaded then
LoadFunctions;
Session.Call(isc_add_user(StatusVector, @UserData), true);

FUserName := UserName;
end;


Полный пакет, с заголовками и прочими полезностями могу прислать мылом.


 
marsello   (2003-01-28 17:48) [7]

Спасииииииииибо!!!!!!!!!!!!!!!


 
kaif ©   (2003-01-28 17:58) [8]

Помнится, в IBX под D5 был отдельный модуль прототипов всех функций администрирования сервера. Я как-то в свое время использовал этот модуль для создания примитивного Администратора сервера.



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-38204
SeNtiMeL
2003-02-02 01:45
2003.02.13
позиция текста в RichEdit !


9-38001
Sewix
2002-09-11 08:00
2003.02.13
как убить все спрайты


3-38054
nika_ufc
2003-01-26 17:21
2003.02.13
как открить dbx file?


4-38653
Праведник
2003-01-04 23:06
2003.02.13
Создание окна используя Windows API


7-38576
dim-
2002-12-08 23:59
2003.02.13
LPT/USB