web-dev-qa-db-ja.com

資格情報なしでInterBase / Firebirdデータベースからデータをエクスポートする

資格情報を失った古いプロジェクトのInterBase/Firebirdデータベースファイルがあります。 gstatコマンドでダンプされたデータベースに関するいくつかの情報を以下に示します[1]。このファイルに埋め込みデータベースとしてアクセスしています。つまり、Firebirdのインスタンスを実行していません。オンディスク構造(ODS)11.2がこのバージョンに対応しているため、私はMacOSを使用しており、Firebird2.5をインストールしています。

isqlコマンドを使用してデータベース構造をエクスポートすることはできますが、有効なユーザー名とパスワードがないと、このツールを使用してデータにアクセスできず、次のエラーメッセージが表示されます。

Error while preparing SQL statement:
- SQLCODE: -551
- no permission for read/select access to TABLE FILES', -551, 335544352

ユーザー名/パスワードとしてデフォルトのSYSDBA/masterkeyを指定すると、エラーメッセージが表示されます。

Error while connecting to database:
- SQLCODE: -902
- cannot attach to password database', -902, 335544653

新しいFirebird3で暗号化が導入され、データは暗号化されずに保存されるため(16進エディターでデータを表示できます)、資格情報なしでこのデータにアクセスしてエクスポートする方法があると思います。どうすればよいですか?

[1]:gstatコマンドの出力

Database "./DATABASE.GDB"
Database header page information:
    Flags           0
    Checksum        12345
    Generation      26450714
    Page size       4096
    ODS version     11.2
    Oldest transaction  25058616
    Oldest active       25058617
    Oldest snapshot     25058617
    Next transaction    25058619
    Bumped transaction  1
    Sequence number     0
    Next attachment ID  1401189
    Implementation ID   26
    Shadow count        0
    Page buffers        0
    Next header page    0
    Database dialect    1
    Creation date       Jul 21, 2014 13:42:21
    Attributes      force write

    Variable header data:
    Sweep interval:     20000
    *END*
1
Benjamin B.

2番目のエラーcannot attach to password databaseは、ユーザー名とパスワードが提供されたときに表示されますが、これはセキュリティデータベースを開くことができなかったためです。

MacOSでは、このファイルは次の場所にあります。

/Library/Frameworks/Firebird.framework/Resources/English.lproj/var/security2.fdb

デフォルトでは、firebirdユーザーが所有します。これにより、管理ツール(isqlgsecgfixなど)を別のユーザーとして実行すると問題が発生します。

この問題を解決する1つの方法は、これらのコマンドをfirebirdユーザーとして実行することです。もう1つは、セキュリティデータベースの権限を変更することです。

chmod o+r /Library/Frameworks/Firebird.framework/Resources/English.lproj/var/security2.fdb

これにより問題が解決し、デフォルトのsysdba/masterkey資格情報を使用してデータにアクセスできました。これらはnot GDBファイルに保存されていますが、前述のsecurity2.fdbファイル。これは、デフォルトの資格情報を使用できる理由を説明しています。

1
Benjamin B.