Firebird 3.0 unter Linux Mint 19.2 Cinnamon 4.2.4

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

Hallo an alle Linux-Anwender.

Ich möchte hier ein Linux Mint Thema starten und (hoffentlich abschliessen), welches beschreiben soll,
  • wie Firebird 3.0 (Firebird-3.0.2.32703.ds4-11ubuntu2) unter Linux Mint 19.2 64 Bit, Cinnamon 4.2.4 mittels der Anwendungsverwaltung installiert wird.
  • welche Einstellungen nach der Installation ggfls. vorgenommen werden sollten bzw. müssten.
  • wie das "Firebird ISQL Tool" (ISQL Version: LI-V3.0.2.32703 Firebird 3.0; kurz: ISQL Tool) über das Terminal aufgerufen wird.
  • wie das ISQL Tool benutzt wird, um eine erste Firebird-Datenbank (hier: unter SYSDBA) anzulegen.
Ich habe bereits einiges (Abbildungen Schritt für Schritt) vorbereitet und stolpere dabei tatsächlich über folgendes: :?

Melde ich mich im Terminal mit erhöhten Rechten (sudo) an kann ich problemfrei eine Firebird Datenbank erstellen bzw. mich mit einer zuvor erstellten Firebird Datenbank verbinden, wie das die folgende Abbildung zeigt.
Siehe bitte: Linux Mint 19_2 CONNECT als root.png

Jedoch ohne erhöhte Rechte, was ja die 'normale' Nutzung darstellt, erhalte ich sowohl beim Erzeugen (CREATE) als auch beim Verbinden (CONNECT) diese Meldung:
Siehe bitte: Linux Mint 19_2 CONNECT als USER.png

Im Internet fand ich bisher keinen Lösungsansatz, damit der Zugriff über das Terminal unter Verwendung des ISQL Tools ohne root Zugriff funktioniert.
Ich vermute, da müssen bestimmte Dateien in ein anderes Verzeichnis verschoben werden. Und / oder vielleicht entsprechende Änderungen in der einen oder anderen Konfigurationsdatei gemacht werden.

Ich würde mich echt freuen, wenn sich hier jemand mit einer Lösung für das Problem meldet. Ich würde es dann gerne checken


Viele Grüsse
Gerd
Dateianhänge
Linux Mint 19_2 CONNECT als USER.png
Linux Mint 19_2 CONNECT als USER.png (39.03 KiB) 19024 mal betrachtet
Linux Mint 19_2 CONNECT als root.png
Linux Mint 19_2 CONNECT als root.png (34.6 KiB) 19027 mal betrachtet
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Hi Gerd,

du verbindest dich im Embedded-Modus mit der Datenbank. Dies erkennst du darin, dass die Netzwerkangabe fehlt. Die Verbindung ist also rein lokal. Dafür wird die fbclient-Bibliothek verwendet. Der aufrufende Benutzer benötigt dann exklusiven DB-Zugriff. Wenn die Dateien in /tmp/firebird also nur für root schreibbar sind, liegt dort das Problem. Interessant wäre, ob der Zugriff über die Netzwerkschicht, z.B. mittels localhost funktioniert.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

martin.koeditz hat geschrieben: So 20. Okt 2019, 19:36 ... du verbindest dich im Embedded-Modus mit der Datenbank. ... Dies erkennst du darin, dass die Netzwerkangabe fehlt. ...
Hallo Martin.

Ich muss mich wohl herantasten. Schade, dass das mit der von mir benutzten Anwendungsverwaltung nicht so funktioniert, wie ich es mir (und offenbar auch andere sich) vorgestellt habe(n).

Windows
Hier mal SYSDBA-Zugriff unter Windows ohne "Als Administrator ausführen" ausgeführt:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
C:\Users\Gerd>isql -z
ISQL Version: WI-T4.0.0.1436 Firebird 4.0 Beta 1
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'c:\users\gerd\documents\firebird\bankleitzahlen.fdb' user 'sysdba' password 'pa$$wort';
Server version:
WI-T4.0.0.1436 Firebird 4.0 Beta 1
Database: 'c:\users\gerd\documents\firebird\bankleitzahlen.fdb', User: SYSDBA
SQL>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wäre das dann auch "Embedded-Modus"?
Fehlt hier auch die "Netzwerkangabe"?
martin.koeditz hat geschrieben: So 20. Okt 2019, 19:36 ...Die Verbindung ist also rein lokal. Dafür wird die fbclient-Bibliothek verwendet. ...
Ich habe hier unter Linux Mint 19.2 nach "fbclient" gesucht und das Folgende gefunden. Sie bitte Abbildung:
fbclient-Bibliothek.png
martin.koeditz hat geschrieben: So 20. Okt 2019, 19:36 ...Der aufrufende Benutzer benötigt dann exklusiven DB-Zugriff. ...
Das kann ich leider zurzeit nicht so recht einordnen / umsetzen. :oops:
martin.koeditz hat geschrieben: So 20. Okt 2019, 19:36 ... Wenn die Dateien in /tmp/firebird also nur für root schreibbar sind, liegt dort das Problem. ...
"Dateien" ist gut. Da liegt nur eine Datei drin. Siehe bitte Abbildung:
Verzeichnis admin tmp_firebird_.png
martin.koeditz hat geschrieben: So 20. Okt 2019, 19:36 ... Interessant wäre, ob der Zugriff über die Netzwerkschicht, z.B. mittels localhost funktioniert.
Wie bitte könnte ich dazu unter Linux Mint 19.2 in etwa vorgehen, um das zu prüfen?

Viele Grüsse
Gerd
Dateianhänge
Verzeichnis admin tmp_firebird_.png
Verzeichnis admin tmp_firebird_.png (27.42 KiB) 19009 mal betrachtet
fbclient-Bibliothek.png
fbclient-Bibliothek.png (137.01 KiB) 19009 mal betrachtet
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Hallo Gerd,

ich werde mal versuchen, etwas Licht ins Dunkel zu bringen.

Im folgenden Beispiel gebe ich den Server mit an. Die Vebindung wird dann mit dem Firebird-Server (10.1.1.99) hergestellt. Dieser kümmert sich dann um die Kommunikation des Clients (ISQL) mit der Datenbank. Mehrere parallele Verbindungen sind dann möglich.

Code: Alles auswählen

SQL> connect 10.1.1.99:/srv/firebird/employee.fdb user 'sysdba' password 'masterkey';
Database: 10.1.1.99:/srv/firebird/employee.fdb, User: SYSDBA
Statt der IP kann natürlich auch ein DNS auflösbarer Name angegeben werden. Für lokalen Zugriff ist auch localhost möglich.

Mache ich das Gleiche ohne Netzwerkangabe, nutzt ISQL eine embedded-Verbindung, die direkt über die fbclient.so (Linux) bzw. die fbclient.dll (Windows) hergestellt. ISQL versucht nun exklusiven Zugriff auf die Datei zu erhalten. Habe ich bereits eine Verbindung (z.B. wie oben) hergestellt, erhalte ich eine Fehlermeldung.

Code: Alles auswählen

SQL> connect /srv/firebird/employee.fdb;
Statement failed, SQLSTATE = 08001
I/O error during "lock" operation for file "/srv/firebird/employee.fdb"
-Database already opened with engine instance, incompatible with current
Grundsätzlich sollte der Zugriff immer über den Firebird-Server durchgeführt werden. Lokale Embedded-Zugriffe werden meist von lokal installierten Programmen durchgeführt, die keine Serverinstallation benötigen (oder durchführen wollen).

Der Embedded-Modus kann auch für das Zurücksetzen des SYSDBA-Kennwortes sein. Das führt dann aber zu weit. ;)

OK, in /tmp/firebird liegt keine DB-Datei. Wo kommt dieser Pfad dann her?

Gruß
Martin
Martin Köditz
it & synergy GmbH
bfuerchau
Beiträge: 484
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Ab 3.0 gibt es keine Unterscheidung bzgl. embedded oder Server via fbclient.
Dies unterscheidet man mittels ServerType im Connectionstring.

ServerType = 0 => Parallel Access
ServerType = 1 => Exclusiv Access
Benutzeravatar
martin.koeditz
Beiträge: 440
Registriert: Sa 31. Mär 2018, 14:35

Ab 3.0 gibt es keine Unterscheidung bzgl. embedded oder Server via fbclient.
Dies unterscheidet man mittels ServerType im Connectionstring.
Da hast du recht. Jedoch wird im angegebenen Beispiel nicht der Firebird-Server-Instanz angesprochen, sonderrn der lokale Zugriff gestartet. Hier werden weiterhin Zugriffsrechte auf Dateibasis benötigt. Wenn der normale Benutzer diese nicht hat, funktioniert das nicht.

Im ISQL habe ich keine Option den Zugriffsmodus einzustellen (so meine Kentniss). Die Beispiele habe ich unter 3.0.4 durchgeführt. Das beschriebene Verhalten deckt sich also mit dem von Gerd.

@bfuerchau
Hast du weitere Infos zum ServerType?

Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

martin.koeditz hat geschrieben: So 20. Okt 2019, 21:53 ... ich werde mal versuchen, etwas Licht ins Dunkel zu bringen. ...
Danke. :)
Habe bei meinen Internet-Recherchen u. a. diese Antwort gelesen: ... wenn Du mutig genug bist ... Sie bezog sich auf die sinng. Frage, ob es schwierig sei Firebird unter Linux zu installieren.
Wie gesagt ich habe mich darauf verlassen, dass Firebird - installiert über die aufgerufene Anwendungsverwaltung - danach problemfrei funktioniert. Tut es ja unter Windows auch.
martin.koeditz hat geschrieben: So 20. Okt 2019, 21:53 ...
Im folgenden Beispiel gebe ich den Server mit an. Die Vebindung wird dann mit dem Firebird-Server (10.1.1.99) hergestellt. Dieser kümmert sich dann um die Kommunikation des Clients (ISQL) mit der Datenbank.
Ich habe beide Beispiele über das Terminal versuch nachzustellen.
Entweder es kam eine Meldung, die sicherlich auf eine von mir nicht korrekte Eingabe zurückzuführen ist. Die von dir verwendete Firebird-Server Bezeichnung ist da so ein Kandidat dafür.

martin.koeditz hat geschrieben: So 20. Okt 2019, 21:53 ...
OK, in /tmp/firebird liegt keine DB-Datei. Wo kommt dieser Pfad dann her? ...
Das ist mir nicht bekannt.

Ich hoffe ja, dass sich vielleicht jemand meldet, dem es unter Linux Mint 19.x ebenso ergangen ist.

Ich könnte auch Timeshift ausführen. Dort einen Zeitpunkt wählen, zu dem es Firebird auf dem System nicht gab. Und Firebird erneut installieren. :?

Viele Grüsse
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Mo 21. Okt 2019, 09:01 Ab 3.0 gibt es keine Unterscheidung bzgl. embedded oder Server via fbclient.
Dies unterscheidet man mittels ServerType im Connectionstring.

ServerType = 0 => Parallel Access
ServerType = 1 => Exclusiv Access
Hallo bfuerchau.

Ich behalte diese Information sicher im Hinterkopf.
(Ich wüsste zurzeit leider nicht, wie ich das mit dem Firebird ISQL Tool (ISQL-FB) umsetzen könnte bzw. ob das für den verweigerten Zugriff als 'normaler' User auf das /tmp-Verzeichnis etwas bringt.) :?

Viele Grüsse
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
bfuerchau
Beiträge: 484
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Im ISQL gibst du doch ganz normal den Connect ein. Der ServerType sollte standardmäßig auf 0 stehen und muss eigentlich explizit auf 1 gesetzt werden.

Vielleicht hilft dies ja noch weiter:
http://www.ibphoenix.com/files/Embedded_fb3.pdf
Gerd
Beiträge: 234
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Mo 21. Okt 2019, 12:37 Im ISQL gibst du doch ganz normal den Connect ein. Der ServerType sollte standardmäßig auf 0 stehen und muss eigentlich explizit auf 1 gesetzt werden.

Vielleicht hilft dies ja noch weiter:
http://www.ibphoenix.com/files/Embedded_fb3.pdf
Hallo bfuerchau.

Danke für Deine Bemühungen.

Viele Grüsse
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Antworten