AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Neuer Benutzer für Firebird-Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Neuer Benutzer für Firebird-Datenbank

Ein Thema von ralfiii · begonnen am 8. Apr 2009 · letzter Beitrag vom 11. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 11:09
Datenbank: Firebird • Version: 2.1 • Zugriff über: Interbase Express
Hallo!

Wir haben früher immer einfach als SYSDBA auf eine Firebird-Datenbank zugegriffen.

Nachdem sich das manchmal im Feld mit existierenden Anwendungen gespreizt hat (und weil man das ja nicht soll, ist ja ein Sicherheitsloch wie ich gelesen habe) haben wir das dahin gehend geändert, dass wir bei Neuinstallationen am Zielrechner in Firebird automatisch einen neuen Benutzer angelegt haben.
Unsere Anwendung hat sich dann fortan als dieser Benutzer angemeldet.

Nun hat mir ein Kunde ein Datenbankfile geschickt (wie auch immer die entstanden ist), bei dem man - wenn man sich als dieser User anmeldet und versucht eine Tabelle zu lesen kriegt man eine Fehlermeldung "no permission for read/select access to TABLE TESTTABLE".

Zum Procedere: Das Datenbankfile wird bei der Erstinstallation einfach auf den Zielrechner kopiert. (Bei upgrades der Software kann es schon vorkommen, dass die Struktur der Datenbank von einem Update-skript angepasst wird).
Erzeugt wurde das File auf meinem Entwicklungsrechner, also als sysdba. D.h. ich würde vermuten SYSDBA ist Owner von allen Tabellen.
Und: Das funktionert wunderbar. Auch mit dem "neuen" Benutzer.
Nur bei dem einen Kunden ist's schiefgefaufen und ich versteh nicht warum.

Was ist da los?
Hilfe!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 12:19
Hallo,

da kann man nur raten.
Lass dir doch zusätzlich die security(2) schicken.
Vielleicht wurde ja beim Update-Scriopt das Grant auf den neuen User vergessen ?

Dem ganzen Ärger umgehst du, indem du die DB als dein neuer Nutzer erzeugst und veschickst,
also Backup als sysdba, Restore als UserX.

Dann ist UserX der Owner der DB und darf alles (zusätzlich zum sysdba).


Heiko
Heiko
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#3

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 12:39
Zitat von hoika:
Hallo,

Dem ganzen Ärger umgehst du, indem du die DB als dein neuer Nutzer erzeugst und veschickst,
also Backup als sysdba, Restore als UserX.

Dann ist UserX der Owner der DB und darf alles (zusätzlich zum sysdba).

Heiko
Schon mal versucht? Das geht glaube ich nicht so einfach.
alex
Alexander
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 14:25
Hallo #,

nicht nur versucht, sondern auch öfters gemacht.
Einfach mal ausprobieren.

Das ist meines Wissens auch die einzige Möglichkeit,
den Owner einer bestehenden DB zu ändern,
ohne in den Systemtabellen rumzupfuschen.

Von der Kommandozeile:

gbak -b data.fdb data.fbk -user sysdba -pass masterkey
gbak -c data.fbk data2.fdb -user hoika -pass geheim

Deshalb sollte man auch die Backups an einem sicheren Ort haben,
sonst käme jeder an die Daten ran,
falls sie nicht clientseitg verschlüsselt worden sind.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 14:29
Zitat von hoika:
da kann man nur raten.
Lass dir doch zusätzlich die security(2) schicken.
Vielleicht wurde ja beim Update-Scriopt das Grant auf den neuen User vergessen ?
Die Sache ist (für mich) viel misteriöser:
In dem Update-Script ist kein grant drin.

Und im Normalfall funktioniert das trotzdem - ich kopier eine Datenbank in der NUR der SYSDBA vorkommt, leg auf dem Computer den neuen Firebird-User an ohne die Datenbank-datei dabei anzutasten und alles läuft einwandfrei. (das ist z.B. was, das ich garnicht versteh' - war mir aber bisher recht).

Soll ich also für diese Datenbank für alle Tabellen ein grant machen?
Und: Welche alle - auch die Systemtabellen?

Danke!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 8. Apr 2009, 15:01
Hallo,

mysteriös ...

Also. Zuerst einmal.
In der Security2.fdb stehen nur Username + verschlüsselt das Passwort (genauer der Hash).

In der eigentlichen Datenbank-Datei stehen u.a. die Rechte, und zwar immer bezogen auf den User-Namen.

Bist du sicher, dass dein Programm nicht als sydba reingeht ?

Schnapp dir mal IB-Expert.
Doppelklick auf eine Tabelle, dann rechts auf "DDL".
Dann siehst du neben dem Create Table auch die Grants.
Das erste Grant (Grant All) ist der DB-Owner.

Das Grant muss für den Owner nicht explizit gemacht werden.

Ein Grant auf System-Tabellen gibt es nicht (AFAIK).


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 10. Apr 2009, 08:55
Zitat von hoika:
mysteriös ...
Stimmt - mein Gott, mein deutsch rostet auch schön ein...

Zitat:
Bist du sicher, dass dein Programm nicht als sydba reingeht ?
Ja, da bin ich 100% sicher.
Der Fehler lässt sich mit z.B. Flamerobin oder IBExpert nachvollziehen.

Zitat:
Schnapp dir mal IB-Expert.
Doppelklick auf eine Tabelle, dann rechts auf "DDL".
Dann siehst du neben dem Create Table auch die Grants.
Das erste Grant (Grant All) ist der DB-Owner.
In meinem IBExpert (Personal) lassen sich die Grants nicht anzeigen.
Flamerobin sagt zu der DDL der "kaputten" Datenbank:

SQL-Code:
CREATE TABLE SYSTEMSETTINGS(
  VALNAME Varchar(20) NOT NULL,
  VALCONTENT Blob sub_type 1,
  CONSTRAINT FK_SYSTEMSETTINGS PRIMARY KEY (VALNAME)
);
GRANT DELETE, INSERT, REFERENCES, SELECT, UPDATE
 ON SYSTEMSETTINGS TO SYSDBA WITH GRANT OPTION;
Bei der anderen Datenbank (bei der das Select funktioniert) sieht die DDL ganz gleich aus.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 10. Apr 2009, 11:41
Ich sehe aber keinen Grant für den neuen Benutzer
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 10. Apr 2009, 12:44
Zitat von mkinzler:
Ich sehe aber keinen Grant für den neuen Benutzer
Ja, da ist auch keiner.
Aber das andere Datenbankfile hat auch kein grant drin und geht mit dem neuen Benutzer sehr wohl.
Das wundert mich ja so.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Neuer Benutzer für Firebird-Datenbank

  Alt 10. Apr 2009, 12:52
Das wundert mich auch. Lege doch einfach entsprechende Grants an.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz