web-dev-qa-db-ja.com

Firebird 3.0を試してみても運がない

今日、私はFirebird 3.0を試してみるつもりですが、何らかの理由で、少なくともJDBCアプリケーションから接続できる方法ではインストールできないようです。

私がしたことはこの記事に従うことでした:

http://firebird3.blogspot.com.br/2012/03/how-to-install-firebird-3.html

これが起こったことです:

 c:\ etc\Firebird30> gsec -add sysdba -pass masterkey 
 
 c:\ etc\Firebird30> start firebird.exe -a -m 
 
 c:\ etc\Firebird30> isql 
 CONNECTまたはCREATE DATABASEを使用してデータベースを指定します
 SQL> create database "localhost:c:\ temp\mydbfb3.fdb" user "sysdba "password" masterkey "; 
ステートメントが失敗しました、SQLSTATE = 08006 
接続からのデータの読み取りエラー。
 SQL> 

「ローカルに」データベースを作成することは今機能します:

 SQL>データベース "c:\ temp\mydbfb3.fdb"ユーザー "sysdba"パスワード "masterkey"; 
 SQL> commit; 
 SQL> 
を作成します

しかし、その場合、JDBCアプリケーション(まだすべて「localhost」)から接続すると、エラーメッセージが表示されます(sysdba/masterkeyを使用してログインします)。

 GDS例外。 335544472。ユーザー名とパスワードが定義されていません。 Firebirdログインの設定をデータベース管理者に依頼してください。
理由:ユーザー名とパスワードが定義されていません。データベース管理者にFirebirdログインのセットアップを依頼してください。

JDBCアプリケーションのユーザー名とパスワードがsysdba/masterkeyであることを(複数回)再確認しました。

コマンドラインから、新しく作成したデータベースに実際にアクセスできます。

 SQL> connect 'c:\ temp\mydbfb3.fdb'; 
データベース: 'c:\ temp\mydbfb3.fdb' 
 SQL> create table foo(bar integer) ; 
 SQL> insert into foo values(1); 
 SQL> select * from foo; 
 
 BAR 
 ====== ====== 
 1 
 
 SQL>コミット; 
 SQL> 

私は明白な何かを見逃していると確信していますが、何ですか?

問題は2つあります。

最初のFirebird 3はより厳しいセキュリティを使用し、古い認証メカニズムはデフォルトで無効になっています。そのため、古い接続ライブラリに依存するクライアントは、そのままでは機能しません。

古い認証メカニズムを機能させるには、firebird.confで次の設定を行う必要があります。

AuthServer = Legacy_Auth, Srp, Win_Sspi

(必ず#接頭辞を削除してください)

2番目に、Jaybird(Firebird JDBCドライバー)の純粋なJavaワイヤープロトコル実装は、このLegacy_Authオプションでサポートされていない古い認証メカニズムを使用します。現時点でJaybirdを使用してFirebird 3に接続できるのは、ネイティブオプション(jdbc:firebirdsql:native: URL-prefixおよびjaybird2x.dllおよびfbclient.dllを使用)を使用している場合のみです。

補遺1

Firebird 3(Alpha 1以降)には、Jaybirdで使用されていた古い認証方法も実装されているため、Jaybirdはネイティブライブラリを使用しなくても機能します(レガシー認証が有効で、ユーザーがレガシーユーザーマネージャーで設定されている場合) )。

参照 JaybirdおよびFirebird

補遺2

Jaybird 3以降では、追加設定なしでより安全なSrp認証モデルがサポートされ、Jaybird 3.0.4では、ワイヤープロトコル暗号化のサポートが導入されました。これは、追加の構成なしでFirebird 3に接続できることを意味します。

5
Mark Rotteveel