Frage

Mit Informix kann ich auf einem Tisch grant select wie;

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

Wie kann ich dies durchzuführen auf alle Tabellen in der Datenbank?

War es hilfreich?

Lösung

Es gibt keine einfache Möglichkeit, dies zu tun (entweder in dem SQL-Standard oder in Informix), aber es ist in der Regel nicht erforderlich, da das spezifische Privileg normalerweise standardmäßig gewährt wird. Ich stelle mir jedoch, dass in der Tat wollen Sie allgemeinere Operationen zu tun, und wollen wissen, welche Möglichkeiten es gibt.

Je nachdem, was Sie wollen tun und wie Sie Ihr System so einrichten, können Sie Ihre Ziele auf verschiedenen Wegen erreichen.

Brute-Force - direkte Antwort auf die Frage

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

Nehmen Sie den Ausgang aus diesem und es in ein Programm füttern. Ich benutze SQLCMD für den Job, nicht zuletzt, weil es keine unerwünschte Ausgabe generiert:

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 -

Die zusätzlichen Schrägstriche nötig sind, um rund um die Schale zu arbeiten. Die ‚-f -‘ Optionen sind nicht unbedingt notwendig, aber es explizit machen, dass die zweite SQLCMD von der Standardeingabe lesen. Wenn Sie DB-Access verwenden, müssen Sie über den Wortschwall Sorge, es erzeugt -., Die der Grund, warum ich SQLCMD an erster Stelle geschrieben

Natürlich kann diese Lösung ziemlich leicht scripted und verallgemeinert werden - man muss nur mit der Nutzung von Angeboten vorsichtig sein

.

Mit Rollen

Eine andere Möglichkeit ist es, eine Rolle zu erstellen, die alle Berechtigungen, die Sie wollen, und dann diese Rolle Benutzern zu gewähren, wie erforderlich. Der Nachteil ist, dass die Software die Rolle festlegen muss, so dass die Verbindung von Menschen dieses Privileg haben. Eine Möglichkeit ist, für jeden Benutzer der select-only Rolle als Standardrolle zu setzen.

Mit Server Studio Java Edition

SSJE hat Privileg-Management-Tools, diese Aufgabe zu vereinfachen.

Verwendung von Open-Admin Too

OAT Tools mit Rechteverwaltung helfen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top