Question

Avec Informix, je peux accorder la sélection sur un tableau tel que;

grant select on 'dba'.mytable to someuser as dba;

Comment puis-je effectuer cela sur toutes les tables de la base de données?

Était-ce utile?

La solution

Il n’existe pas de moyen simple de le faire (dans le standard SQL ou dans Informix), mais cela n’est généralement pas nécessaire car ce privilège spécifique est normalement octroyé par défaut. Cependant, j'imagine qu'en réalité, vous souhaitez également effectuer des opérations plus générales et connaître les options disponibles.

En fonction de vos objectifs et de la configuration de votre système, vous pouvez atteindre vos objectifs de différentes manières.

Force brute - réponse directe à la question

 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

Prenez le résultat et introduisez-le dans un programme. J'utilise SQLCMD pour le travail, notamment parce qu'il ne génère pas de sortie non souhaitée:

sqlcmd -d dbname -e "
 SELECT 'GRANT SELECT ON \"' || TRIM(owner) || '\".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;" |
sqlcmd -d dbname -f -

Les barres obliques inverses supplémentaires sont nécessaires pour contourner le shell. Les options ' -f - ' ne sont pas strictement nécessaires, mais expliquent que le second SQLCMD lira à partir d'une entrée standard. Si vous utilisez DB-Access, vous devez vous soucier du verbiage qu'il génère - c'est la raison pour laquelle j'ai écrit SQLCMD en premier lieu.

De toute évidence, cette solution peut être assez facilement scriptée et généralisée - vous devez simplement faire attention à l'utilisation des guillemets.

Utilisation des rôles

Une autre option consiste à créer un rôle qui dispose de toutes les autorisations souhaitées, puis à accorder ce rôle aux utilisateurs en fonction des besoins. L'inconvénient est que votre logiciel doit définir le rôle afin que les personnes qui se connectent disposent de ce privilège. Une possibilité consiste à définir le rôle de sélection uniquement comme rôle par défaut pour chaque utilisateur.

Utilisation de Server Studio Java Edition

SSJE dispose d'outils de gestion des privilèges pour simplifier cette tâche.

Utilisation de Open Admin Too

l'OAT dispose d'outils permettant de gérer les privilèges.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top