distribuir a aplicação

24/09/2004

Srs, bom dia!!!

Estou em fase final de desenvolvimento da minha primeira aplicação aqui na empresa. Uso Delphi7 e DBExpress+Firebird1.5. Tenho que distribuir a aplicação para 6 máquinas da minha rede. Percebi que além de instalar o Firebird Client, as dll´s dbexpint, midas, tenho que copiar para a pasta do aplicativo os arquivos dbxdrivers.ini e dbxconnections.ini, neste último tem um espelho da configuração de acesso ao BD, que é feito no componente de conexão SqlConnection, no qual entre outras informações, tem o usuário ´SYSDBA´, e a senha ´masterkey´. Então eu faço 2 perguntas:

1) É possível distribuir a aplicação nas maquinas clientes, sem o arquivo dbxconnections.ini?

2) Sendo SYSDBA/masterkey, usuários e senhas padrões do IB/FB, qualquer um com um pouco de conhecimento poderia ter acesso ao banco, (pois no arquivo dbxconnections.ini, tem o caminho do banco). Se eu criar um outro usuário e senha para o banco, ainda sim será possível acessar o banco usando o par SYSDBA/masterkey?

Talvez possam ser perguntas para respostas bem simples, mas eu realmente tenho estas dúvidas.

Abraço a todos.


Programalista

Respostas

24/09/2004

Weber

Sim é perfeitamente possivel acessar seu banco de dados. mesmo que você altere a senha masterkey, se o banco de dados for copiado para outro computador a senha que fica valendo é a do computador (ibserver) e não a do banco de dados


Responder Citar

24/09/2004

Weber

Sim é perfeitamente possivel acessar seu banco de dados. mesmo que você altere a senha masterkey, se o banco de dados for copiado para outro computador a senha que fica valendo é a do computador (ibserver) e não a do banco de dados.

Explicando melhor:
A senha não é do banco de dados e sim do Interbase/Firebird


Responder Citar

24/09/2004

Vinicius2k

Colega,

Tenho que distribuir a aplicação para 6 máquinas da minha rede. Percebi que além de instalar o Firebird Client, as dll´s dbexpint, midas, tenho que copiar para a pasta do aplicativo os arquivos dbxdrivers.ini e dbxconnections.ini...

Isto não é uma regra... e pra dizer a verdade eu acho ruim.
Só está sendo necessária esta distribuição pq vc está usando o que se chama de ´Conexão nomeada´, configurando a propriedade [b:92ce0f8033]ConnectionName[/b:92ce0f8033] da TSQLConnection com uma configuração salva no .ini

1) É possível distribuir a aplicação nas maquinas clientes, sem o arquivo dbxconnections.ini?

Sim. E, na minha opinião é a melhor forma.

1. Retire o valor da propriedade [b:92ce0f8033]ConnectionName[/b:92ce0f8033] da TSQLConnection.

2. Configure apenas : [b:92ce0f8033]DriverName[/b:92ce0f8033], [b:92ce0f8033]LibraryName[/b:92ce0f8033], [b:92ce0f8033]VendorLib[/b:92ce0f8033] e [b:92ce0f8033]Params[/b:92ce0f8033] (nesta, basicamente, só é necessário configurar : Database, User_Name, Password, ServerCharSet e SQLDialect)

3. Crie seu próprio .ini, parecido com este :
[banco&93;
Caminho=localhost:C:\Sistema\dados\BANCO.FDB

E no evento [b:92ce0f8033]BeforeConnect[/b:92ce0f8033] da SQLConnection leia o arquivo .ini atribuindo o valor presente na chave [b:92ce0f8033]Caminho[/b:92ce0f8033] para o parametro [b:92ce0f8033]Database[/b:92ce0f8033] da TSQLConnection :
SQLConnection1.Params.Values&91;´Database´&93;:= VALOR_VINDO_DO_INI

Assim vc distribui e configura este .ini nas estações, sem maiores dificuldades...

2) Sendo SYSDBA/masterkey, usuários e senhas padrões do IB/FB, qualquer um com um pouco de conhecimento poderia ter acesso ao banco, (pois no arquivo dbxconnections.ini, tem o caminho do banco). Se eu criar um outro usuário e senha para o banco, ainda sim será possível acessar o banco usando o par SYSDBA/masterkey?

1. Ao instalar o IB/FB sempre altere a senha do SYSDBA e a informe, de preferencia por escrito, ao seu cliente. O SYSDBA sempre terá acesso a tudo, por isso sua senha deve ser alterada.

2. Nunca use o SYSDBA como um usuário da aplicação. O mínimo de segurança q vc pode implementar é criar seu próprio usuário no servidor, com o nome da aplicação, por exemplo, e dar-lhe direitos sobre os objetos
grant all on TABELA to USUARIO

A melhor forma de não precisar ficar dando direitos, é criar o usuário no servidor e criar o banco logado com este usuário, assim ele vai ser o owner (dono) do banco, não sendo necessário dar-lhe direitos.

Espero ter ajudado...
T+


Responder Citar

24/09/2004

Programalista

Olá Vinicius, eu configurei como vc citou, mas o Delphi está exibindo o seguinte erro: ´Connection name missing´.

meu arquivo .ini:

[color=green:81b92bcdea][SERVIDOR]
CAMINHO=SERVIDOR:C:\SISTEMAS\SINGER\BDGERAL.FDB[/color:81b92bcdea]

Propriedade params do Sqlconnection:
[color=green:81b92bcdea]Database = BDGERAL
Username = SYSDBA
Password = masterkey
ServerCharset = win1252
SqlDialect = 3[/color:81b92bcdea]

Evento BeforeConect do Sqlconnection:
[color=green:81b92bcdea]SQLConnect.Params.Values[´DATABASE´]:=´SERVIDOR:C:\SISTEMAS\SINGER\BDGERAL.FDB´;[/color:81b92bcdea]


Responder Citar

24/09/2004

Vinicius2k

Perdão...
Esqueci de mencionar:
Propriedade [b:c4b240616b]LoadParamsOnConnect[/b:c4b240616b] da TSQLConnection setata para [b:c4b240616b]False[/b:c4b240616b]...

É isso?

T+


Responder Citar

24/09/2004

Programalista

Parece que estou apanhando ainda...O Delphi agora esta exibindo o seguine erro:
[b:bf1d4425fa]´Your name and password are not defined. Ask your database administrator to set up a Firebird login.´[/b:bf1d4425fa]


Responder Citar

24/09/2004

Vinicius2k

Agora é um problema de senha...
Vc alterou a senha do SYSDBA ? Se sim altere também na conexão... ou vc criou um novo usuário ? se configure a conexão com este novo usuário...
Verifique os parametros da conexão, quando vc retira o ConnectionName, todos os parametos são limpos, então vc deve escolher o driver Interbase e os parametros básicos irão retornar...
Lembre-se ! Após a conexão com um novo usuário, é necessário que este usuário tenha direitos sobre o banco de dados para poder acessá-lo...

T+


Responder Citar