ho creato un utente Firebird (PIPPO) tramite jaybird, segue "display" gsec:utente firebird con privilegi concessi non può accedere alle tabelle
GSEC> di user name uid gid admin full name ------------------------------------------------------------------------------------------------ SYSDBA 0 0 Sql Server Administrator PIPPO 0 0 GesAll 1.0 User GSEC>
creo un ruolo (GESALLDB_USER) in Firebird DB e concesso alcuni privilegi:
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 COPPIE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON COVE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_CONFIGURAZIONE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_COVE TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_SOGGETTI TO ROLE GESALLDB_USER GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DEPOSIZIONI TO ROLE GESALLDB_USER GRANT GESALLDB_USER TO PIPPO SQL>
concesso questo ruolo al nuovo utente tramite JayBird (ultima riga prima):
il problema è che ogni volta che provo ad eseguire una query ho ricevuto il messaggio:
SQL> select * from anelli; Statement failed, SQLSTATE = 28000 no permission for read/select access to TABLE ANELLI SQL>
Se concedo direttamente la TABELLA all'utente appena creato, tutto funziona.
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 FINI ATTIVA LAST_USED
============ =========== ====== ====== ====== ====== ============ ============ =
1 FOI 89LR E 2012 1 100 N
0
2 FOI 89LR E 2013 1 100 S
41
Qualche aiuto su questo?
Grazie Gianluca.
Fatto come suggerisce lo stesso risultato: 'SQL> connect "C: \ Users \ teiluke \ documenti \ ondulati \ DB \ prova \ gesalldb.fdb" utente "pippo" password "topolino" ruolo "gesalldb_user"; Versione server: WI-V2.5.2.26540 Firebird 2.5 Database: "c: \ utenti \ teiluke \ documenti \ ondulati \ db \ prova \ gesalldb.fdb", Utente: pippo, Ruolo: gesalldb_user SQL> selezionare * dagli anelli; Istruzione fallita, SQLSTATE = 28000 nessuna autorizzazione per lettura/selezione accesso a TABLE ANELLI SQL> show grant; /* Concedere le autorizzazioni per questo database */ . . . GRANT GESALLDB_USER TO PIPPO ' –
@GianlucaPasqualato Strano, proverò a riprodurre questo e vedere se ho perso qualcosa. –
@GianlucaPasqualato L'ho appena testato e il ruolo è sensibile al maiuscolo/minuscolo quando circondato da virgolette (singole o doppie), quindi l'uso di 'ruolo 'gesalldb_user'' non funziona, ma usando' role' GESALLDB_USER'' o 'role gesalldb_user' funzionerà. –