Текущий архив: 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.47 MB
Время: 0.008 c