Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Problème de gestion de droit sur un générateur


Sujet :

SQL Firebird

  1. #1
    Membre éclairé
    Problème de gestion de droit sur un générateur
    Bonjour à tous

    Je viens de voir un comportement de Firebird 3.0.6 que je ne comprend pas bien, je m'explique.

    1- je crée un utilisateur (CORWIN) a qui je donne les droits suivant suivant sur un générateur (MESCOMMANDES_NUMCMDE_GEN):

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE USER CORWIN PASSWORD '1234';
    GRANT USAGE ON SEQUENCE MESCOMMANDES_NUMCMDE_GEN TO "CORWIN" WITH GRANT OPTION;
    COMMIT;


    à l'intérieur de mon application en entant connecté a ma base avec ce user, la commande suivante échoue lamentablement :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    SET GENERATOR MESCOMMANDES_NUMCMDE_GEN TO 33


    et voici le message d'erreur :

    Unsuccessful metadata update
    SET GENERATOR MES COMMANDES_NUMCMDE_GEN failed
    no permission for Alter access to GENERATOR MES COMMANDES_NUMCMDE_GEN
    j'ai besoin d'aide pour comprendre et résoudre ce problème ! je suis à l'arrêt !

    Merci à tous
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  2. #2
    Membre éclairé
    La je tente de migrer vers la 3.0.7 pour voir ce qui se passe !
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  3. #3
    Membre éclairé
    1- Backup base de données avec la version 3.0.6
    2- désinstallation de la version 3.0.6
    3- installation de la version 3.0.7
    4- Restauration base de données avec la version 3.0.7
    5- Création d'un nouveau utilisateur avec droit sur le générateur !

    Mais le problème persiste

    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  4. #4
    Membre éclairé
    Apparemment c'est un soucis qui na pas encore été pris en compte ?
    https://www.mail-archive.com/firebird-support@yahoogroups.com/msg18413.html

    En effet le :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    GRANT USAGE ON SEQUENCE MESCOMMANDES_NUMCMDE_GEN TO "CORWIN" WITH GRANT OPTION;

    Ne donne pas accès en modification sur la SEQUENCE, j'ai essayiez le GRANT ALTER...... Erreur !

    j'ai donc utilisé une des solutions proposées:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    select gen_id(Nom_Sequence, <Increment> - gen_id(Nom_sequence, 0)) from rdb$database


    Espérant trouver une solution plus propre ! (je tente maintenant avec l'attribution par les rôles)

    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  5. #5
    Membre éclairé
    Je viens de tester avec l'octroi des permissions par les rôles ca ne marche pas.
    Merci
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

  6. #6
    Rédacteur/Modérateur

    Bonjour,

    j'ai essayé ceci , pour être franc j'avais lu ceci j'ai lu ceci auparavant https://www.ibphoenix.com/resources/...how_to/doc_473

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT USAGE ON SEQUENCE TESTSEQ1 TO PUBLIC

    ainsi cela fonctionne tous les utilisateurs ont accés à la séquence TOTO en lecture

    j'ai ensuite vérifié
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.RDB$USER, a.RDB$GRANTOR, a.RDB$PRIVILEGE, a.RDB$GRANT_OPTION, a.RDB$RELATION_NAME, a.RDB$FIELD_NAME, a.RDB$USER_TYPE, a.RDB$OBJECT_TYPE, a.RDB$DB_KEY
    FROM RDB$USER_PRIVILEGES a
    where a.RDB$RELATION_NAME='TESTSEQ1'


    SYSDBA SYSDBA G 1 TESTSEQ1 [null] 8 14 00000012:00000d35
    PUBLIC SYSDBA G 0 TESTSEQ1 [null] 8 14 00000012:00000d36
    j'ai ensuite testé la suppression
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    REVOKE USAGE ON GENERATOR TESTSEQ1 FROM PUBLIC


    je me suis ensuite penché sur un utilisateur particulier
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    GRANT USAGE ON GENERATOR TESTSEQ1 TO USER TATA;

    Même succès mais toujours en lecture seulement !

    En regardant les release notes (hè oui, de temps en temps il faut les lire )
    In Firebird 3.0.0, only USAGE permissions for exceptions (CORE-2884) and generators/sequences (gen_id, next value for: CORE-2553) are enforced.
    The system tables (RDB$*) are now read-only. Attempting any DDL or insert/update/delete statement on them will be rejected.

    pourquoi j'indique cette citation ? Parce que les valeurs des SEQUENCE/GENERATEUR sont dans une table système.

    Il semblerai donc bien que seul
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    select gen_id(Nom_Sequence, <Increment> - gen_id(Nom_sequence, 0)) from rdb$database

    puisse se faire, ou pour un incrément de 1
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
      SELECT NEXT VALUE FOR Nom_Sequence FROM RDB$DATABASE

    et encore faut-il avoir l'USAGE
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  7. #7
    Membre éclairé
    Bonjour @SergioMaster
    Merci pour toutes ses précisions et la confirmation de la solution finale
    Pour la documentation :
    https://www.firebirdsql.org/pdfmanual/html/generatorguide-sqlsyntax.html
    vous connaitrez la vérité et la vérité vous affranchira !
    windev/firebird/Mkframework
    vous devez tous l'éssayer impressionnant pour Débutant, Confirmé et Expert
    http://mkframework.com/accueil.html
    http://sqlmanagerx.com/

###raw>template_hook.ano_emploi###