Ta strona została przetłumaczona maszynowo. Przeczytaj oryginał angielski. English

Biblioteka IBSurgeon

Jak sprawić, aby Firebird 3 łączył się jak 2.5 z osadzonym ciągiem połączenia

Jak wiesz, jeśli w ciągu połączeniowym podasz tylko ścieżkę do bazy danych (bez localhost, nazwy serwera lub xnet), Firebird 3 łączy się z bazą danych jako serwer osadzony:

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

Jak widzisz, Firebird nie przeprowadza uwierzytelniania w przypadku połączenia osadzonego - hasło jest nieobecne, a MON$REMOTE_PROTOCOL ma wartość null

Jeśli chcesz połączyć się z lokalną bazą danych jako użytkownik XNET, z uwierzytelnianiem, standardowym sposobem jest podanie XNET jako protokołu.

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        

Jednak możliwe jest “zabronienie” połączeń osadzonych, jeśli zmienisz kolejność dostawców w firebird.conf na następującą:

Code
Providers = Loopback, Engine12,  Remote

W tym przypadku nie będzie możliwe połączenie jako osadzone bez hasła, ponieważ Firebird użyje 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>

W przypadku połączenia z nazwą użytkownika i hasłem, połączenie zostanie nawiązane jako XNET, tak jak w Firebird 2.5

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