firebird utilisateur avec les privilèges accordés ne peuvent pas accéder aux tables
J'ai créé une Firebird de l'utilisateur (PIPPO) via jaybird, suit gsec "affichage":
GSEC> di nom d'utilisateur uid gid admin nom complet ------------------------------------------------------------------------------------------------ SYSDBA 0 0 Administrateur Sql Server PIPPO 0 0 GesAll 1.0 Utilisateur GSEC>
J'ai créer un rôle (GESALLDB_USER) dans Firebird DB et accordé certains privilèges:
SQL> afficher la subvention; /* Accorder des autorisations pour cette base de données */ SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR ANELLI POUR RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR LA COPPIE DE RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR L'ANSE DE RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR DATI_CONFIGURAZIONE DE RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR DATI_COVE DE RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR DATI_SOGGETTI DE RÔLE GESALLDB_USER SUBVENTION DELETE, INSERT, SELECT, UPDATE, LES RÉFÉRENCES SUR DEPOSIZIONI DE RÔLE GESALLDB_USER SUBVENTION GESALLDB_USER DE PIPPO SQL>
accordé ce rôle pour le nouvel utilisateur par l'intermédiaire de jaybird (dernière ligne) avant:
le problème est qu'à chaque fois que j'essaie d'exécuter une requête j'ai le message:
SQL> select * from anelli; Instruction a échoué, SQLSTATE = 28000 pas de permission de lecture/sélectionner l'accès à la TABLE ANELLI SQL>
Si je vous l'accorde directement à la TABLE de l'utilisateur nouvellement créé tout fonctionne.
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 ARN TIPO ANNO INIZIO FINE ATTIVA
LAST_USED
============ =========== ====== ====== ====== ============ ============ ====== =
1 FOI 89LR E 2012 1 100 N
0
2 FOI 89LR E 2013 1 100 S
41
Toute aide sur ce?
Merci Gianluca.
Vous devez vous connecter pour publier un commentaire.
Dans Firebird les droits de l'attribution d'un rôle ne sont utilisés que lorsque le rôle est spécifié lors de la connexion à la base de données. En d'autres termes, si un utilisateur a un rôle à jouer, que l'utilisateur n'obtient pas automatiquement les droits de ce rôle. L'utilisateur doit indiquer de façon explicite le rôle de l'utiliser, sinon seulement les droits attribués aux
PUBLIC
et l'utilisateur lui-même s'appliquer.Pour ISQL la
se CONNECTER
cahier des charges est:Donc, pour votre exemple d'utilisation:
Noms de rôle entouré par (simple ou double) citations sont traités sensible à la casse. Donc, en utilisant
role 'gesalldb_user'
ne correspondra pas à un rôleGESALLDB_USER
, tandis querole gesalldb_user
volonté. C'est comme les règles pour les autres doubles, cité objectnames (comme la table et columnnames) dans Firebird.Cela s'applique également lors de l'utilisation d'un pilote ou d'un composant d'accès, mais la configuration exacte et le nom de propriété pourraient varier (par exemple pour Jaybird la propriété est
roleName
ousqlRole
).role 'gesalldb_user'
ne fonctionne pas, mais à l'aide derole 'GESALLDB_USER'
ourole gesalldb_user
fonctionne.roleName
(etsqlRole
alias), voir la liste des propriétés de la connexion