Fórum Firebird - criando usuários #56501
11/07/2006
0
cheguei na parte de cadastro de usuário de meu projeto ^^ :)
Certo.. o mesmo utilizo o componente ZEOS para conexão aos Bancos de dados:
ORACLE, POSTGRES e FIREBIRD
para permição no projeto já ta feito :)
ae eu quero criar um vincu-ló do usuário do sistema com o do banco
ou seja.. quando eu criar um novo usuário para meu projeto criar também o mesmo usuário no banco.. :)
no Oracle e Postgre temos o comando CREATE USER ^^
já no FIREBIRD sei que ele salvas os usuário dentro do segurity2.fdb só que nela não temos acesso direto pelo local ´C:\Arquivos de programas\Firebird\Firebird_2_0´
se copiar-mos o segurity2.fdb para outra pasta ele acessa normal :o
resumindo tudo... como criar o usuário por SQL no FIREBIRD?
a versão do firebird é 2.0 rc3 lançada em 03/07/2006
desde já agradeço! :)
Ajmsistemas
Curtir tópico
+ 0Posts
11/07/2006
Augustolima
No livro Firebird Essentials, fala sobre o utilitário de linha de comando GSEC, nele vc pode criar, alterar e excluir usuários.
Procure algum artigo falando falando sobre ele.
Infelizmente não tô podendo disponibilizar agora os detalhes do capítulo.
:(
Gostei + 0
11/07/2006
Ajmsistemas
e quando poder post ae o comentário do livro ^^
se poder é claro :)
Gostei + 0
12/07/2006
Ajmsistemas
tipo... já que tenho que rodar o comando em cima do GSEC.EXE
como fazer o mesmo ? já tentei da seguinte forma :
criando um arquivo *.BAT ele conecta e não executa a 2 linha :(
var tmp:TextFile; begin if FileExists( ´gsec.exe´ ) then begin AssignFile(tmp, ´add.bat´); Rewrite(tmp); Writeln(tmp, ´gsec.exe -user SYSDBA -password masterkey´) ; Writeln(tmp, ´a testando -pw teste´) ; Writeln(tmp, ´q´) ; CloseFile(tmp); WinExec(´add.bat´, SW_SHOW ); Sleep(1000); if FileExists(´add.bat´) then DeleteFile(´add.bat´); end; end;
Executando um atraz do outro
WinExec(´gsec.exe -user SYSDBA -password masterkey´, SW_SHOW ); WinExec(´gsec.exe a testando -pw teste´, SW_SHOW );
e executando tudo de uma vez
var tmp:string; begin if FileExists( ´gsec.exe´ ) then begin tmp := ´gsec.exe -user SYSDBA -password masterkey´ + #13 + ´a testando -pw teste´; WinExec(pchar(tmp), SW_SHOW ); end; end;
Como fazer para executar essa linha de comando ?
e criar o usuário no banco ???
alguém poderia me dar uma forcinha ^^
desde já agradeço!
Gostei + 0
12/07/2006
Ajmsistemas
Resolvi :)
resposta estava no forum mesmo ^^
[url]http://forum.devmedia.com.br/viewtopic.php?t=66954&highlight=gsec&sid=a0d3cc1ab9aa9a00a34715f9cd298b06[/url]
resumindo a melhor resposta é a Pesquisa ^^
Obrigado pela atenção de todos!
Gostei + 0
13/07/2006
Ajmsistemas
é o seguinte para adicionar um usuário no FIREBIRD basta usar a GSEC
o seguinte comando :
gsec -add andeson -pw teste -user SYSDBA -password masterkey
certo... porém só vai funcionar blz se for servidor local ^^
o meu problema agora é...
se o servidor estiver lá na casa da china ^^ e eu estou aqui no Brasil :(
certo o comando seria :
gsec -add andeson -pw teste -user SYSDBA -password masterkey -database 192.168.1.2:3050:"C:\Arquivos de programas\Firebird\security2.fdb"
o problema é que no FIREBIRD acima do 2.0 o security2.fbd ta bloqueado o acesso
como farei para cadastar o usuário ?
ae pensei em UDF até criei uma rotina
library TOPFBUDF;
{ Important note about DLL memory management: ShareMem must be the
first unit in your library´s USES clause AND your project´s (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
uses
ShareMem,
Windows,
SysUtils {$IFDEF LINUX},
LibC {$ENDIF LINUX},
Classes;
//Implementação
Function CREATEUSER ( login, senha :string ) : Integer; {$IFDEF MSWINDOWS}stdcall{$ENDIF}{$IFDEF LINUX}cdecl{$ENDIF};
var
tmp:string;
begin
Result := 0;
{$IFDEF MSWINDOWS}
if FileExists(´gsec.exe´) then
begin
tmp := ´gsec.exe -add ´ + LowerCase(login) + ´ -pw ´ + LowerCase(senha) + ´ -user SYSDBA -password masterkey´;
WinExec( pchar(tmp), SW_HIDE );
Result := 1;
end;
{$ENDIF MSWINDOWS}
{$IFDEF LINUX}
if FileExists(´gsec´) then
begin
tmp := ´gsec -add ´ + LowerCase(login) + ´ -pw ´ + LowerCase(senha) + ´ -user SYSDBA -password masterkey´;
result := 1;
end;
{$ENDIF LINUX}
end;
{$R *.res}
// funcoes exportadas
exports
CREATEUSER;
begin
end.
//o declare dele
declare external function criaUser
cstring(128), cstring(128)
returns
integer by value
entry_point ´CREATEUSER´ module_name ´TOPFBUDF´
porém como ele vai executar um programa externo ele Trava ´´ o banco :(
por favor... Alguém pode me dar uma força ????
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)