firebird-Benutzer mit Berechtigungen erteilt keine access-Tabellen
Erstellte ich eine Firebird-user (PIPPO) über jaybird, folgt gsec "Anzeige":
GSEC> di Benutzername-uid-gid-admin-vollständiger name ------------------------------------------------------------------------------------------------ SYSDBA-0 0-Sql-Server Administrator PIPPO 0 0 GesAll 1.0 Benutzer GSEC>
Ich eine Funktion erstellen (GESALLDB_USER) in Firebird-DB und gewährt einige Privilegien:
SQL - > show gewähren; /* Erteilen von Berechtigungen für die Datenbank */ GRANT DELETE, INSERT, SELECT, UPDATE, VERWEISE AUF ANELLI ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENZEN, COPPIE, ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENZEN AUF DIE BUCHT ZU-ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, VERWEISE AUF DATI_CONFIGURAZIONE ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, VERWEISE AUF DATI_COVE ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, VERWEISE AUF DATI_SOGGETTI ROLLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, VERWEISE AUF DEPOSIZIONI ROLLE GESALLDB_USER GRANT GESALLDB_USER ZU PIPPO SQL - >
wird diese Rolle für die neuen Benutzer über jaybird (Letzte Zeile vor):
das problem ist, dass immer wenn ich versuchen, eine Abfrage ausführen bekam ich die Meldung:
SQL - > select * from anelli; Anweisung ist fehlgeschlagen, SQLSTATE = 28000 keine Berechtigung für read/select access to TABLE ANELLI SQL - >
Wenn ich gewähren Sie direkt der TABELLE auf den neu angelegten Benutzer funktioniert alles.
SQL> grant all on anelli to pippo;
SQL> show grant;
/* Grant permissions for this database */
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO ROLE GESALLDB_USER
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO USER PIPPO
SQL> connect "C:\Users\teiluke\Documents\Ondulati\DB\prova\gesalldb.fdb" user "p
ippo" password "topolino";
Commit current transaction (y/n)?y
Committing.
Server version:
WI-V2.5.2.26540 Firebird 2.5
WI-V2.5.2.26540 Firebird 2.5/XNet (E7441EA1CA2CF4)/P12
WI-V2.5.2.26540 Firebird 2.5/XNet (E7441EA1CA2CF4)/P12
Database: "C:\Users\teiluke\Documents\Ondulati\DB\prova\gesalldb.fdb", User: pi
ppo
SQL> select * from anelli;
PROGRESSIVO FEDERAZIONE RNA TIPO ANNO INIZIO FEINE ATTIVA
LAST_USED
============ =========== ====== ====== ====== ============ ============ ====== =
1 FOI 89LR E 2012 1 100 N
0
2 FOI 89LR E 2013 1 100 S
41
Jede Hilfe zu diesem?
Dank Gianluca.
InformationsquelleAutor Gianluca Pasqualato | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Firebird die Rechte, die einer Rolle zugeordnet sind, nur angewendet werden, wenn diese Rolle wird angegeben, wenn Verbindung zur Datenbank herstellen. In anderen Worten, wenn ein Benutzer eine Rolle, dass Benutzer nicht automatisch die Rechte dieser Rolle. Der Benutzer muss explizit die Rolle zu verwenden, ansonsten nur die Rechte zugewiesen
PUBLIC
und der Anwender selbst übernehmen.Für ISQL die
CONNECT
Spezifikation ist:Also für dein konkretes Beispiel zu verwenden:
Rollennamen umgeben von (einfachen oder doppelten) Anführungszeichen werden behandelt, groß-und Kleinschreibung. Also mit
role 'gesalldb_user'
wird und nicht mit einer RolleGESALLDB_USER
, währendrole gesalldb_user
wird. Dies ist, wie die Regeln für die anderen doppelten Anführungszeichen objectnames (wie Tabellen-und columnnames) in Firebird.Dies gilt auch, wenn mit einem Treiber oder access-Komponente, sondern auch die genaue Konfiguration und die Eigenschaft name kann variieren (z.B. für Jaybird Eigentum ist
roleName
odersqlRole
).Seltsam, ich werde versuchen Sie zu reproduzieren und zu sehen, wenn ich nichts übersehen habe.
Habe es gerade getestet, und die Rolle, die groß-und Kleinschreibung, wenn umgeben von (einfachen oder doppelten) Anführungszeichen, so mit
role 'gesalldb_user'
nicht funktioniert, aber mitrole 'GESALLDB_USER'
oderrole gesalldb_user
arbeiten.nochmal danke, es funktioniert, wenn ich es starten von isql direkt, wenn ich es über jaybird: Properties props = new Properties(); props.setProperty("user", utenteDB); props.setProperty("password", passDB);
nochmals vielen Dank, es funktioniert wenn ich es direkt aus isql. Wenn ich es mit jaybird: Properties props = new Properties(); props.setProperty("user", utenteDB); props.setProperty("password", passDB); props.setProperty("Rolle", roleDB); ich ausgedruckt roleDB und seine valuse ist GESALLDB_USER Connection conn = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:" + Db_pfad,props); ich bekam: Errore: org.firebirdsql.jdbc.FBSQLException: GDS Ausnahme. 335544352. keine Berechtigung für lese - /select-Zugriff auf TABELLE <Tabelle>
InformationsquelleAutor Mark Rotteveel