Hoje pensei em dar uma chance ao Firebird 3.0, mas por algum motivo não consigo instalá-lo - pelo menos não de uma maneira que eu possa conectar a partir de um aplicativo JDBC.
O que fiz foi seguir este artigo . Isso é o que aconteceu:
c:\etc\Firebird30>gsec -add sysdba -pass masterkey c:\etc\Firebird30>iniciar firebird.exe -a -m c:\etc\Firebird30>isql Use CONNECT ou CREATE DATABASE para especificar um banco de dados SQL> criar banco de dados "localhost:c:\temp\mydbfb3.fdb" usuário "sysdba" senha "masterkey"; Falha na instrução, SQLSTATE = 08006 Erro ao ler os dados da conexão. SQL>
Agora, criar o banco de dados "localmente" funciona:
SQL> criar banco de dados "c:\temp\mydbfb3.fdb" usuário "sysdba" senha "masterkey"; SQL> confirmar; SQL>
Mas, nesse caso, quando me conecto de um aplicativo JDBC (ainda tudo "localhost"), recebo a mensagem de erro (usando sysdba/masterkey para efetuar login)
Exceção GDS. 335544472. Seu nome de usuário e senha não estão definidos. Peça ao seu administrador de banco de dados para configurar um login Firebird. Razão: Seu nome de usuário e senha não estão definidos. Peça ao seu administrador de banco de dados para configurar um login Firebird.
Verifiquei duas vezes (mais de uma vez) se o nome de usuário e a senha no aplicativo JDBC são sysdba/masterkey.
Na linha de comando, posso acessar o banco de dados recém-criado:
SQL> connect 'c:\temp\mydbfb3.fdb'; Banco de dados: 'c:\temp\mydbfb3.fdb' SQL> criar tabela foo (inteiro da barra); SQL> inserir em valores foo (1); SQL> selecione * de foo; BAR ============ 1 SQL> confirmar; SQL>
Tenho certeza de que estou perdendo algo óbvio, mas o quê?
O problema é duplo:
O First Firebird 3 usa uma segurança mais rígida e tem o antigo mecanismo de autenticação desabilitado por padrão. Portanto, os clientes que dependem de bibliotecas de conexão mais antigas não funcionarão imediatamente.
Para permitir que o antigo mecanismo de autenticação funcione, a seguinte configuração precisa ser definida no firebird.conf:
(certifique-se de remover o
#
prefixo)Em segundo lugar, a implementação do protocolo wire-java puro do Jaybird (o driver Firebird JDBC) usa um mecanismo de autenticação desatualizado que não é suportado por esta
Legacy_Auth
opção. Usar o Jaybird para se conectar ao Firebird 3 neste momento só funcionará se você usar a opção nativa (com ojdbc:firebirdsql:native:
prefixo de URL e jaybird2x.dll e fbclient.dll).Adendo 1
O Firebird 3 (desde o Alpha 1) agora também implementou o antigo método de autenticação usado pelo Jaybird, então o Jaybird agora também funcionará sem usar a biblioteca nativa (desde que a autenticação legada esteja habilitada e o usuário tenha sido configurado com o usermanager legado ).
Veja também Jaybird e Firebird 3
Adendo 2
O Jaybird 3 e superior oferece suporte ao modelo de autenticação Srp mais seguro pronto para uso, e o Jaybird 3.0.4 introduziu o suporte para a criptografia de protocolo de fio. Isso significa que ele pode se conectar ao Firebird 3 sem configuração adicional.