Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je sais donner les droits sur une table a un utilisateur :
GRANT SELECT ON matable TO user;
Mais comment fait on pour donner le droit SELECT sur toute ma base a cet user car j'ai essayé cela mais cela ne marche pas :
GRANT SELECT ON DATABASE mabase TO user;
Merci de votre aide
Hors ligne
En fait, GRANT xxx ON DATABASE donne des droits sur l'objet DATABASE, pas sur son contenu, le seul droit disponible sur un objet database étant celui de se connecter. Pour donner les droits à toutes les tables d'une base (je présume que c'est ce que vous cherchez à faire), il n'y a qu'une solution, à l'heure actuelle : générer un script. En 9.0, il y aura une syntaxe permettant de faire ça automatiquement.
Par exemple, cette commande générera une série de grant pour tous les objets du schéma public:
SELECT 'GRANT SELECT ON ' || schemaname || '.' || tablename || ' TO toto;' from pg_tables where schemaname = 'public';
Il n'y a plus qu'à copier coller le résultat ou l'envoyer dans un fichier, et le rééxécuter dans la foulée.
Évidemment, si tous les objets ne sont pas dans le schéma public, il faudra modifier la clause where.
Dernière modification par Marc Cousin (24/08/2010 08:05:32)
Marc.
Hors ligne
Pour les bases de données, l n'y a pas que le droit CONNECT. Il y a aussi le droit CREATE et TEMPORARY. Mais bon, c'est juste pour dire quelque chose car je suis entièrement d'accord sur le reste
Guillaume.
Hors ligne
Merci beaucoup Marc pour vos informations très claires et merci également gleu pour le complément d'infos.
Hors ligne
Pages : 1