このページは機械翻訳されています。英語の原文をお読みください。 English

IBSurgeon ライブラリ

Firebird 3を2.5のように埋め込み接続文字列で接続する方法

ご存知のとおり、接続文字列でデータベースへのパスだけを指定した場合(localhostやサーバー名、xnetを指定しない場合)、Firebird 3は組み込みサーバーとしてデータベースに接続します:

Code
C:\HQbird\Firebird30>isql -user SYSDBA d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             <null>
MON$REMOTE_PROCESS              <null>
MON$USER                        SYSDBA

ご覧のとおり、組み込み接続の場合、Firebirdは認証を実行しません - パスワードは存在せず、MON$REMOTE_PROTOCOLはnullです。

ローカルデータベースに認証付きのXNETユーザーとして接続したい場合、標準的な方法はプロトコルとしてXNETを指定することです。

Code
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey xnet://d:\30test.fdb
Database: xnet://d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             XNET
MON$REMOTE_PROCESS              C:\HQbird\Firebird30.sql.EXE
MON$USER                        SYSDBA        

ただし、firebird.confのプロバイダーの順序を次のように変更することで、組み込み接続を「禁止」することが可能です:

Code
Providers = Loopback, Engine12,  Remote

この場合、パスワードなしでの組み込み接続はできなくなります。FirebirdがXNETを使用するためです。

Code
C:\HQbird\Firebird30>isql -user SYSDBA  d:\30test.fdb
Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
Use CONNECT or CREATE DATABASE to specify a database
SQL>

ユーザー名とパスワードを指定して接続する場合、Firebird 2.5と同様に、接続はXNETとして確立されます。

Code
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             XNET
MON$REMOTE_PROCESS              C:\HQbird\Firebird30.sql.EXE
MON$USER                        SYSDBA