Rechercher : dans
Par :

SQL - Grant - Distribution de droits

Dernière réponse le 3 oct 2007 à 15:52:05 mezcalouz, le 15 déc 2006 à 22:06:39 
 Signaler ce message aux modérateurs

Bonsoir,
Je viens d'installer Oracle, et j'ai crée plusieurs utilisateurs.
Je voudrais permettre a un utilisateur A d'avoir tous les droits sur les tables de l'utilisateur B qui commencent par PUBLIC_xxx.
Le probleme, c'est que Grant n'accepte pas de sous requete du type
GRANT SELECT, UPDATE, INSERT
ON (SELECT table_name
from all_tables
where owner = 'B'
and table_name LIKE 'PUBLIC_%' )
TO 'A';
Quelqu'un sait comment je pourrais faire ca? A part autoriser chaque table une par une.
Merci !

Configuration: Windows XP
Firefox 1.5.0.8

Meilleures réponses pour « SQL Grant Distribution de droits » dans :
SQL - Accorder des permissions Voir L'attribution de permissions La clause GRANT permet d'attribuer des permissions à un ou plusieurs utilisateurs sur un ou plusieurs éléments de la base de données. La syntaxe de cette clause est la suivante : GRANT Liste_de_permissions ON...
Choisir une distribution Linux VoirChoisir sa distribution GNU/Linux est loin d'être évident ! Surtout quand on débute sur la banquise ;-) Ceci n'a pas la prétention de promouvoir une distribution au détriment des autres. C'est plutôt une liste de solutions classées par...
[Sécurité] Droits d'accès - GNU/Linux VoirLes droits d'accès Préface I. Généralités II. Les droits III. Les droits spéciaux 1. Le Sticky bit 2. Les droits d'endossement IV. Les commandes 1. chmod 2. umask Préface Le but de cet article n'est pas de vous apprendre quels...
Javascript - Interdire le clic droit de la souris VoirIl est possible d'empêcher que votre visiteur effectue un clic droit sur votre page. Ceci permet une protection relative de vote code source et de vos photos. Placez ce script entre les balises et de votre code HTML :
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
SQL - Gestion des permissions VoirGestion des permissions Plusieurs personnes peuvent travailler simultanément sur une base de données, toutefois ces personnes n'ont pas forcément les mêmes besoins: certaines peuvent par exemple nécessiter de modifier des données dans la table,...
SQL - Retirer des permissions VoirLa révocation de permissions La clause REVOKE permet de retirer des permissions à un ou plusieurs utilisateurs sur un ou plusieurs éléments de la base de données. La syntaxe de cette clause est la suivante : REVOKE [GRANT OPTION FOR]...

1

 jdanet, le 3 oct 2007 à 15:52:05
  • +1

Bonjour,

Le mieux semble être de se faire une petite routine en PL/SQL, qui boucle sur le résultat du SELECT pour appeler un EXECUTE IMMEDIATE avec la commande à faire :

begin
for nomtable in
(SELECT table_name
from all_tables
where owner = 'B'
and table_name LIKE 'PUBLIC_%'
) loop

EXECUTE IMMEDIATE 'grant SELECT, UPDATE, INSERT on ' || nomtable.table_name || ' to A';

end loop;

end;


Ca c'est la forme simple, la forme complexe utilise un curseur pour ouvrir le SELECT et le parcourir. Avec un curseur Oracle ne bugge pas (en version < 9, parfois il ne lit pas lma dernière ligne), mais sinon c'est la même chose.

Répondre à jdanet
Collection CommentÇaMarche.net