Firebird 4.0 "Your user name and password are not defiend."

Forum für Fragen rund um die Installation, Konfiguration und Inbetriebnahme von Firebird.

Moderator: martin.koeditz

Antworten
Martin
Beiträge: 24
Registriert: Mo 31. Jan 2022, 09:45

Hallo zusammen,

ich kriege gerade mal wieder nen Vogel - vor Kurzem hat noch alles geklappt - und jetzt wieder nicht. :oops: :oops: :oops:

Ich erhalte beim Zugriff auf eine Firebird V4.0 Datenbank die Meldung "Your user name and password are not defiend. Ask your database administrator to set up a Firebird login".

So sieht meine Testumgebung aus:

Ein Netzwerk mit einem Windows 7 x64bit Rechner und ein Windows 10 x64bit Rechner.
Auf dem Windows 7 x64 Rechner ist die Datenbank mit dem Namen "TEST.FDB"
Weiterhin läuft auf diesem Rechner der Firebird Server Dienst - gestartet über die "install_service.bat".
In dem Verzeichnis von Firebird 4.0 auf dem Windows 7 Rechner liegt auch die "security4.fdb"

Auf dem Windows 10 x64bit Rechner schreibe ich ein Programm um auf die Datenbank auf dem Windows 7 Rechner zuzugreifen.
Ich probiere es ztunächst mal mit der Minimal Version. So sieht der Quellcode aus:

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.Diagnostics;
using FirebirdSql.Data.FirebirdClient;

namespace ns_firebird_server
{
  internal class Program
  {
    static void Main(string[] args)
    {
      FbConnectionStringBuilder connectionStringBuilder = new FbConnectionStringBuilder();

      //Z270 ist der Windows 7 Rechner mit der IP 192.168.0.30

      connectionStringBuilder.Database = @"\\Z270\netzwerk_z270\austausch\z270\fb_40_db\TEST.FDB";
      connectionStringBuilder.ServerType = FbServerType.Default;
      connectionStringBuilder.ClientLibrary = string.Empty;
      connectionStringBuilder.DataSource = "192.168.0.30";
      connectionStringBuilder.Port = 3050;
      connectionStringBuilder.UserID = "SYSDBA";
      connectionStringBuilder.Password = "masterkey";
      connectionStringBuilder.Role = "ADMIN";

      string connection_string = connectionStringBuilder.ToString();

      using(FbConnection  fbConnection = new FbConnection(connection_string))
      {
        try
        {
          fbConnection.Open();
          fbConnection.Close();
          FbConnection.ClearPool(fbConnection);
          FbConnection.ClearAllPools();
        }
        catch(Exception ex)
        { Debug.Print(ex.Message); }
      }
    }
  }
}
Ich habe inzwischen soviel verstanden dass ich bei Verwendung von .net4.8
zusätzlich zu dem FirebirdSql.Data.FirebirdClient 10.3.2.0
noch diese beiden Bibliotheken brauche
- System.Threading.Tasks.Extensions -Version 4.6.3
- System.Runtime.CompilerServices.Unsafe -Version 6.1.2

Wenn ich mich lokal auf dem Windows 7 rechner einlogge kann
ich zB problemos über eine "Embedded" Verbindung auf die Datenbank zugreifen.

Wer kann mir weiterhelfen.
Ich dreh hier schon langsam durch - immer wieder die gleiche Sch... mit nem Netzwerkzugriff.

Viele Grüße

Martin
Martin
Beiträge: 24
Registriert: Mo 31. Jan 2022, 09:45

So, ich glaub ich habe es gefunden ...

Mea culpa ... ich habe noch mal in alten Beiträgen gesucht - hatte ich wohl übersehen.
Sorry!

An dieser Stelle nochmals vielen Dank on "bfuerchau" und "jhoehne"!!!

Der erste Hinweis:
In der "Firebird.conf" den Wert "RemoteFileOpenAbility" auf "1" setzen.

Der zweite Hinweis:
Ganz genau die Anleitung aus der Dokumentation "README.security_database.txt" aus dem Unterverzeichnis "doc"
der Firebird Software lesen und ausführen.
Also über "isql" mit der gewünschten Datenbank verbinden und einen User anlegen.

Und siehe da ...

Und diesmal schreibe ich mir alles an einem Ort zusammen auf, an dem ich es jederzeit wiederfinde.
Versprochen!!! ;)

Vielen Dank noch mal

Martin

PS die nächste Hürde ist ein "Nicht Windows Server" :cry:
bfuerchau
Beiträge: 603
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Das mt RemoteFileOpenAbility solltest du noch mal überlegen, denn das kann häufiger zum Datenbank-Absturz führen und ist auch nicht besonders performant.
"Network stack can still change order of writes so you may get a corrupted database in case of network errors or power outage.
The useful and safe case is working with a shared database marked read-only."

Wobei eine shared DB ja nur bei embedded benötigt werden könnte, ansonsten sollte man die Server-Version nutzen und dann die DB lokal und via Port auch den Server Remote erreichbar machen (Firewallfreigabe).

Du kannst den FB-Client auch als nuget-Package installieren, dann werden die Zusatz-Libs automatisch mit installiert.
Martin
Beiträge: 24
Registriert: Mo 31. Jan 2022, 09:45

Hallo bfuerchau,

wie Du weißt bin ich nicht unbedingt der Netzwerkprofi.

Frage 1
Wobei eine shared DB ja nur bei embedded benötigt werden könnte, ansonsten sollte man die Server-Version nutzen und dann die DB lokal und via Port auch den Server Remote erreichbar machen (Firewallfreigabe).
Das verstehe ich nicht. Könntest Du mir bitte etwas genauer erkläeren - für Leute mit nicht so viel Netzwerk Kenntnissen.
So wie ich es gelernt habe, liegt die Datenbank auf einem Server auf dem auch der Firebird Server Dienst laufen muss um Zugriff zu bekommen.

Frage 2
Mein Test mit .net4.8 und firebirdsql.data.firebirdclient 10.3.2 funktioniert einwandfrei.
Aus Kompatibilitätsgründen würde ich gern mit .net 4.6.1 und firebirdsql.data.firebirdclient 7.10.1.0 arbeiten.
Das funktioniert aber nicht.
Funktioniert das grundsätzlich nicht oder was kann ich tun, damit diese Kombination funktioniert?

Vielen Dank

Martin
bfuerchau
Beiträge: 603
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Zu 1:
Dienst und DB müssen auf demselben Server sein, aber die DB sollte nicht über NAS/Netzlaufwerk laufen.

Zu 2:
Du solltest schon mindestens auf 4.7 gehen, was auch von Windows7 und 8 unterstützt wird.
Net 4.8 ist bei mir auf Win8 nicht installierbar, möglicherweise auf Win7 dann auch nicht.
Martin
Beiträge: 24
Registriert: Mo 31. Jan 2022, 09:45

Vielen Dank für die Infos, bfuerchau.

Ich muss die Frage noch mal aufrollen.

Datenbank und Dienst laufen auf dem selben Server.

Ich bin umgestiegen auf .net 4.7.2 und FirebirdSql 10.3.2.

Soweit so gut und der Datenbankzugriff funktioniert auch.
Aber nur weil ich die Variable "RemoteFileOpenAbility" in der "firebird.conf" auf 1 gesetzt habe.

Nun bin ich mehrfach davor "gewarnt" worden, die Variable "RemoteFileOpenAbility" in der "firebird.conf" auf 1 zu setzen.
Die Begründung dafür kann ich auch verstehen und nachvollziehen.

Aber ohne bekomme ich keinen Datenbankzugriff.
Es kommt ständig die Meldung
"Your user name and password are not defined. Ask your administrator to set up a Firebird login."

Ich habe mit einem lokalen Tool auf dem Server die Datenbank kontrolliert.
Der User ist registriert.
Zu Testzwecken verwende ich den SYSDBA und das bekannte Passwort.
Nix! Kein Zugriff.

Ich verzweifele hier langsam. Kann mir jemand weiterhelfen?
Ich habe auch schon etliche Internet Seiten durchgearbeitet. Nix funktioniert.

Vielen Dank

Martin
Martin
Beiträge: 24
Registriert: Mo 31. Jan 2022, 09:45

bfuerchau hat geschrieben: Sa 8. Nov 2025, 10:21 Zu 1:
Dienst und DB müssen auf demselben Server sein, aber die DB sollte nicht über NAS/Netzlaufwerk laufen.

Zu 2:
Du solltest schon mindestens auf 4.7 gehen, was auch von Windows7 und 8 unterstützt wird.
Net 4.8 ist bei mir auf Win8 nicht installierbar, möglicherweise auf Win7 dann auch nicht.
Hallo bfuerchau,

ja - kann ich bestätigen. Ich habe es auch ausprobiert.
Während der Installation sieht es zwar so aus als ob sich .net4.8 auf Windows 7 installieren läßt.
Aber bei einer Kontrolle der höchsten installierten .net Version war max .net 4.7.2 möglich.
Visual Studio bietet beim Anlegen eines Projektes auf Windows 7 auch max .net 4.7.2 an.
vr2
Beiträge: 265
Registriert: Fr 13. Apr 2018, 00:13

Hallo Martin,

Seit Firebird 3 sind Useraccounts plugin-spezifisch. Je nachdem, welches Plugin Du benutzt, brauchst Du dort auch einen Account. Wenn Deine Verbindung steht, frag mal das hier ab:

Code: Alles auswählen

select * from sec$users
Die letzte Spalte sec$plugin sagt Dir, bei welchem Plugin Du den/die Accounts angelegt hast.

Stell erstmal sicher, dass Du auf dem Server connecten kannst. Kopier bspw einen Flamerobin dorthin, registriere in Flamerobin den Server als

Display name: testserver
Hostname: localhost
Port number: 3050

In Deiner databases.conf gib der test.fdb einen Alias, zb testdb. Dann registrierst Du die DB in Flamerobin

Display name: testdb
Database path: testdb
Username: <dein username>
Password: <dein password>

Dann connectest Du mit Flamerobin zur Datenbank. Wenn das auf dem Server klappt, kannst Du Dich wieder deiner Anwendung widmen. Dann weißt Du, dass Du dort falsch connectest. Durch den DB-Alias wird Dein connect-String einfacher. Mir kommt besonders die erste Zeile komisch vor, ich kenne aber die .net-Vorgaben nicht.

Normalerweise connectest Du zu einem entfernten Server mit <host>/<port>:<dbalias>

Code: Alles auswählen

connectionStringBuilder.Database = @"\\Z270\netzwerk_z270\austausch\z270\fb_40_db\TEST.FDB";
das könnte jetzt so sein, host wird ja weiter unten in DataSource angegeben (seltsame Bezeichung für host) und Port auch:

connectionStringBuilder.Database = "testdb"

auch dass die Anwendung die fbclient nicht nennt, könnte Schwierigkeiten bereiten, evtl wird die falsche genommen.
connectionStringBuilder.ClientLibrary = string.Empty;
connectionStringBuilder.DataSource = "192.168.0.30";
connectionStringBuilder.Port = 3050;
Antworten