Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 10h39   #1
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Par défaut Problème de requête amin role

Bonjour tout le monde;
Utilisant la version 2.5 et essayant d'exploiter les fonctionnalités nouvelles de l'administration des utilisateurs, j'ai un problème que je n'arrive pas à résoudre.
Si je grant le role RDB$ADMIN par SYSDBA vers un autre utilisateur "A" par exemple, ça parait sans problème. Mais le nouveau co-admin "A" ne peut pas lire, modifier les tables de la base. Et encore, il ne peut pas créer d'autres utilisateurs. Cela, je précise par requette SQL depuis les applications Exemple : Create USER B PASSWORD 'pw'; DROP USER C;...
Mais quant j'ai lancer la création d'utilisateur depuis la console par :
gsec - user A -pass m -role RDB$ADMIN -add B -pw pp
Cela marche sans problèmes et le nouvel utilisateur "B" est créer.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h40   #2
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Bonjour,

Es-ce que vous avez fait ça ? :
Code :
1
2
 
gsec -user sysdba -pass masterkey -ADD B -pw pp -admin yes -role rdb$admin;
Et en se connectant à la BDD :
Code :
1
2
 
SQL>connect "chemin\BDD.fdb" user 'B' password 'pp'  role  rdb$admin;
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 15h54   #3
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Merci freud, oui j'ai ajouter l'utilisateur A par SYSDBA et j'ai granter le role RDB$ADMIN à A.
Dans tout les cas, ça marche pour moi avec gsec; mais le problème est lorsque j'essaye de créer un utilisateur via une requête depuis une application;
C-a-d, J'utilise dans mon application, un composant UIBDATABASE, UIBTRANSACTION et UIBQUERY ;
J'écris :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
UIBDataBase1.Connected:=false;
UIBDatabase1.Params.Clear;
UIBDatabase1.Params.ADD('user_name=A');
UIBDatabase1.Params.ADD('password=''PA''');
UIBDatabase1.Params.ADD('sql_role_name = RDB$ADMIN');
 
UIBDatabase1.Connected:=true;
UIBQuery1.SQL.Clear;
IBQuery1.SQL.ADD('CREATE USER B PASSWORD ''B'';');
IF UIBTransaction1.InTransaction Then
     UIBTransaction1.Commit;
UIBTransaction1.StartTransaction;
UIBQuery1.ExecSQL;
UIBTransaction1.Commit;
Si j'exécute ce code j'ai le message :
Citation:
"add record error
no permission for insert/write acess to TABLE USERS"
Reste à noter que si j'écris :
Code :
1
2
UIBDatabase1.Params.ADD('user_name=SYSDBA');
UIBDatabase1.Params.ADD('password=''masterkey''');
ça marche avec succès.?????
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h49   #4
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Le user admin creer par SYSDBA et qui va creer d'autres users doit-être créer ainsi :
Code :
1
2
3
 
CREATE user TEST password '123' GRANT admin role
GRANT RDB$ADMIN TO TEST
Avec FibPlus je viens de le faire mais avec 2 requêtes consécutives :
Code :
1
2
3
4
5
6
7
 
DM1.TR2.StartTransaction;
QRY.SQL.Text :='create user TEST password ''123'' grant admin role';
QRY.ExecQuery;
QRY.SQL.Text :='grant RDB$ADMIN to TEST';
QRY.ExecQuery;
DM1.TR2.Commit;
Et de la même façon, j'ai pu créer d'autres users admin avec le user TEST et ainsi de suite.

Le user A doit-être créer avec le grant admin role et ensuite avec grant RDB$ADMIN to A
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h12   #5
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Je viens de le tester, mais je reçoi le message d'erreur :
Unsuccessfull metadata update
SQL ROLE RDB$ADMIN does not exist
This operation is not defined for system tables.
error code 31.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 21h33   #6
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Je pense que le problème n'est pas dans la création de l'utilisateur A, car je peut l'utiliser pour créer d'autres utilisateur via la console :
gsec -user A -pass a -role rdb$admin -add bigbill -pw bigsekrit
mais le problème est lors de la connexion de A et la declaration du role RDB$ADMIN.
Les composants que j'utilise pour la connexion, oubien delphi oubien je ne sais pas quoi qui bug.
J'ai essayer UIB, IB, DBExpress et tous disent la même chose.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h14   #7
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Je n'ai pas UIB mis avec JvUIB et D7 ca fonctionne bien :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
JvUIBDataBase1.Connected := False;
JvUIBDataBase1.Params.Clear;
JvUIBDataBase1.DATABASENAME:='E:\TEST\BD1.FDB';
JvUIBDataBase1.Params.ADD('user_name=TEST8');
JvUIBDataBase1.Params.ADD('password=123');
JvUIBDataBase1.Params.ADD('sql_role_name = RDB$ADMIN');
JvUIBDataBase1.Params.ADD('lc_ctype=ISO8859_1');
JvUIBDataBase1.SQLDialect:=3;
 
JvUIBDataBase1.Connected:=true;
JvUIBQuery1.SQL.Clear;
JvUIBQuery1.SQL.ADD('CREATE USER TEST9 PASSWORD ''123'' grant admin role;');
IF JvUIBTransaction1.InTransaction Then
JvUIBTransaction1.Commit;
JvUIBTransaction1.StartTransaction;
JvUIBQuery1.ExecSQL;
 
JvUIBQuery1.SQL.Clear;
JvUIBQuery1.SQL.ADD('grant rdb$admin to TEST9');
JvUIBQuery1.ExecSQL;
JvUIBTransaction1.Commit;
Jusqu' à 9 users l'un qui en créer un autres etc...

Peut-être que vous avez plusieurs version de FB d'installer ?
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h34   #8
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
J'ai fais copie/coller de votre code
j'ai seulement enlever JV, et je reçois le même message d'erreur :
"add record error
no permission for insert/write acess to TABLE USERS"
Je ne sais pas est ce que le problème est dans les composant ou dans delphi 2009 ou ailleur???
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h36   #9
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
relisez la doc
vous faites une confusion entre deux chose

Code :
GRANT RDB$ADMIN TO User1;
va donner les droits SYSDBA ou propriétaire à user1 pour le base concernée, cela n'en fait pas l'équivalent de SYSDBA pour les autres bases et donc pas non plus pour la base de sécurité

d'où le message
Code :
no permission FOR INSERT/WRITE acess TO TABLE USERS
pour cela il faut faire l'équivalent de :
[
Code :
GRANT RDB$ADMIN TO User1;
pour la base de sécurité, mais comme on ne peux pas se connecter directement à security2.fdb, du coup on a créé la syntaxe
qui permet donc de donner à un utilisateur les droits pour créer, modifier, supprimer d'autres utilisateurs.
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h43   #10
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
je pense que je peux confirmer que ce n'est ni problème de composants ni problème de delphi, car je viens de lancer les même requête écrites par vous dans l'éditeur de requêtes de IBEasy et j'obtiens après la deuxième requête le même message :
Unsuccessfull metadata update
SQL ROLE RDB$ADMIN does not exist
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 22h51   #11
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
S'il vous plait makowski, écrivez le code que vous voyez qu'il est juste et essayez le dans IBEasy ou autre car ça ne marche pas chez moi partout.
J'ai revus la doc et bien compris, mais ça bloque je ne sais pas!!!
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 08h06   #12
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
la base a bien été créée avec Firebird 2.5 ?
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 08h43   #13
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Non, la base a été créée par fb 2.1, mais je n'ai aucun problème à part ça.
Mais je vous rappel que ça marche si j'utilise la console :
gsec - user A -pass m -role RDB$ADMIN -add B -pw pp
ça marche bien.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 09h57   #14
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Je viens de le tester avec delphi7, c'est exactement le même problème partout.
Le problème est surement au niveau du serveur Firbird, car la commande gsec marche mais les requêtes ne marchent pas.
Je vais encore refaire des essais.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 11h54   #15
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
Citation:
Envoyé par kaouane Voir le message
Non, la base a été créée par fb 2.1, mais je n'ai aucun problème à part ça.
il faut convertir cette base au format de la 2.5 pour pouvoir utiliser les fonctionnalités nouvelles de la 2.5
l'ODS à changé
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 11h55   #16
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
Citation:
Envoyé par kaouane Voir le message
Mais je vous rappel que ça marche si j'utilise la console :
gsec - user A -pass m -role RDB$ADMIN -add B -pw pp
ça marche bien.
forcément la base de sécurité elle est au format de la 2.5
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 12h00   #17
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
Bonjour,

Le code que j'ai poster fonctionne pour une BDD créer avec FB 2.5.
et pas pour une BDD créer avec FB 2.1, chose que je viens de constater avec le message que vous avez eu :
Code :
1
2
3
 
Unsuccessfull metadata UPDATE
SQL ROLE RDB$ADMIN does NOT exist
-Il faut faire une sauvegarde de la BDD depuis FB 2.1 en utilisant gbak
-désinstaller la 2.1 et installer la 2.5 et restaurer la sauvegarde.
-de réexecuter les commande creation des users.

Pour moi ça a marcher.
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 12h06   #18
Membre éprouvé
 
Homme
Analyste-développeur
Inscription : mai 2002
Messages : 989
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Analyste-développeur

Informations forums :
Inscription : mai 2002
Messages : 989
Points : 426
Points : 426
J'ai poster avant de voir votre solution Makowski (messages croisés)

Citation:
Envoyé par Makowski Voir le message
il faut convertir cette base au format de la 2.5 pour pouvoir utiliser les fonctionnalités nouvelles de la 2.5 l'ODS à changé
C'est effectivement cela.
__________________
Seul le Savoir est le Pouvoir
freud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 12h25   #19
Membre habitué
 
Inscription : mai 2006
Messages : 200
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : mai 2006
Messages : 200
Points : 105
Points : 105
Effectivement, il faut que la base soit créée par 2.5 et faire ce que a dit freud.
1- J'ai créer une nouvelle base de données DB1 juste pour tester.
2- J'ai créer un nouvel utilisateur A par :
Create user A password 'A' grant admin role;
l'utilisateur A ne peut pas utiliser les privilèges de sysdba que lorsque sysdba fait :
3- grant RDB$ADMIN to A
Et ça marche;
mais le problème est que ce n'est pas normale.
pourquoi, ce problème? le serveur est 2.5, la base de sécurité est 2.5, la base de données est là dans un fichier sur le serveur. Je ne vois pas pourquoi je doit recréer la base.
N'est ce pas????
Il doit y avoir un détail quelque part qui résoudra le problème.
kaouane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 13h00   #20
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 213
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 213
Points : 3 315
Points : 3 315
Citation:
Envoyé par kaouane Voir le message
pourquoi, ce problème? le serveur est 2.5, la base de sécurité est 2.5, la base de données est là dans un fichier sur le serveur. Je ne vois pas pourquoi je doit recréer la base.
N'est ce pas????
Il doit y avoir un détail quelque part qui résoudra le problème.
parce que la structure interne des base à changée avec la nouvelle version, justement pour pouvoir activer ces nouvelles fonctionnalités
c'est toujours le cas quand on fait un changement majeur de version, l'ODS change.
en base avec l'ODS (structure de stockage sur disque) de la version 2.1, n'a rien pour accueillir les nouvelles fonctionnalités comme celle ci qui ont été crées pour la 2.5
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h20.


 
 
 
 
Partenaires

Hébergement Web