Seite 1 von 1

gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

Verfasst: Mi 11. Okt 2023, 10:15
von Hamburgo
Hallo zusammen,

mein Problem habe ich schon gelöst, ich würde nur gern wissen, warum das so
ist, wie es ist.

Für meine Update-Routine nutze ich gbak unter Apache/PHP, was auch schon
länger problemlos läuft.

Vor einigen Monaten musste ich aus organisatorischen Gründen die Start-
Optionen für Apache/PHP und den FireBird-Server ändern.

Apache wird als Windows-Service und der FireBird-Server als Windows-
Schedule-Task (ohne Benutzer-Anmeldung) gestartet.

Alles läuft wunderbar.

Am Wochenende musste seit langem mal wieder den FireBird-Server manuell
runterfahren, um eine Test-DB kopieren zu können.

Danach den FB-Server per Batch-Datei neu gestartet und Alles lief problemlos,
mit einer Ausnahme, gbak brach immer mit dem Return-Wert 1 ab, aber ohne
jegliche weitere Meldung / Hinweise.

Nach langem Suchen habe ich dann die Ursache gefunden. Der FB-Server muß
"als Administrator" gestartet werden und dann verrichtet auch gbak wieder
problemlos seinen Dienst.

Warum ist das so ?

Ergänzung: Das Benutzer-Konto hat Administrator-Rechte.

Danke und Gruss
Hamburgo

Re: gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

Verfasst: Mi 11. Okt 2023, 10:28
von bfuerchau
Unter Windows sollte der Firebird-Server als Dienst eingerichtet sein.
Dann kann man diesen über die Diensteverwaltung (auch im Taskmanager) starten und stoppen, sowie auch per Shellkommandos.
Nachträglich kann man das auch per "instsvc.exe" einrichten.
http://www.destructor.de/firebird/instsvc.htm

Nun, seit Windows 7 wissen wir, dass ein Admin-Konto für vieles kein Admin ist.
Der FB-Server benötigt aber entsprechende Rechte um auf die Datenbanken zuzugreifen.
Bei mir läuft die Firebird.exe als Dienst unter dem SYSTEM-Konnto.

Re: gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

Verfasst: Mi 11. Okt 2023, 11:03
von Hamburgo
Hallo bfuerchau,

der normale DB-Zugriff via PHP läuft problemlos, egal ob der
FB-Server normal oder als Administrator gestartet wurde.

Aus PHP heraus kann ich die wildesten DB-Aktivitäten ausführen,
ohne jegliche Einschränkungen.

Nur gbak legt Wert darauf, dass der FB-Server als Administrator
gestartet wird.

Ich kann ja damit leben, auch wenn es dafür keine genaue, nach-
vollziehbare Erklärung gibt. So häufig kommt das ja nicht vor.

Aber komisch finde ich das schon.

Eigentlich müsste doch der FB-Server entscheiden wer mit welchen
Rechten mit ihm kommunizieren darf oder halt nicht und dann PHP
und gbak gleich behandeln.

Aber das ein Anwendungs-Programm, wie gbak da rumzickt, verstehe
ich noch nicht.

Re: gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

Verfasst: Do 12. Okt 2023, 09:21
von martin.koeditz
Guten Morgen,

wie lässt du gbak laufen? Als Kommandozeilenaufruf? Oder über PHP selbst?

Wenn du mit gbak direkt auf die DB zugreifst, kann das beschriebene Problem schon auftauchen, da gbak exklusiven Zugriff einfordert. Besser ist die Verwendung des Service-Managers. Hierfür wird die laufende Firebird-Instanz (Engine) verwendet.

Beispiel:

Code: Alles auswählen

gbak -backup -service localhost:service_mgr /var/firebird/produktiv.fdb /backups/produktiv.fbk
Siehe auch https://firebirdsql.org/file/documentat ... up-speedup

Gruß
Martin

Re: gbak funktioniert nur mit den selben Benutzer-Rechten, wie der Server. PHP ist das egal.

Verfasst: So 15. Okt 2023, 00:45
von bfuerchau
GBAK kann auch den Backup/Restore über den FB-Server direkt machen, statt selbsständig.
Über " -service <Computer>:service_mgr" und Angabe des vollständigen Pfads zur DB und dem Backup übernimmt das der Dienst, der dazu auch laufen muss.
Das muss ich auch ab und an so machen, da mir häufig beim Restore gemeldet wird, dass der Backup bereits anderweitig geöffnet ist.
Während des Backups wird per Snapshot gesichert, so dass auch ein Weiterarbeiten durchaus möglich wäre.