Domanda

Con Informix posso concedere selezionare su una tabella come;

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

Come posso eseguire questa operazione su tutte le tabelle del database?

È stato utile?

Soluzione

Non esiste un modo semplice per farlo (nello standard SQL o in Informix), ma di solito non è necessario poiché quel privilegio specifico è normalmente concesso di default. Tuttavia, immagino che in realtà tu voglia fare anche operazioni più generali e vuoi sapere quali opzioni ci sono.

A seconda di ciò che si intende fare e di come è stato impostato il sistema, è possibile raggiungere i propri obiettivi in ??vari modi.

Forza bruta - risposta diretta alla domanda

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

Prendi l'output da questo e inseriscilo in un programma. Uso SQLCMD per il lavoro, anche perché non genera output indesiderati:

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 -

Le barre rovesciate aggiuntive sono necessarie per aggirare la shell. Le opzioni ' -f - ' non sono strettamente necessarie, ma rendono esplicito che il secondo SQLCMD leggerà dallo standard input. Se usi DB-Access, devi preoccuparti della verbosità che genera - che è la ragione per cui ho scritto SQLCMD in primo luogo.

Chiaramente, questa soluzione può essere facilmente copiata e generalizzata - devi solo fare attenzione con il tuo uso delle virgolette.

Utilizzo dei ruoli

Un'altra opzione è quella di creare un ruolo che disponga di tutte le autorizzazioni desiderate e quindi concedere tale ruolo agli utenti come richiesto. L'aspetto negativo di questo è che il tuo software deve impostare il ruolo in modo che le persone che si connettono abbiano quel privilegio. Una possibilità è impostare il ruolo di sola selezione come ruolo predefinito per ciascun utente.

Utilizzo di Server Studio Java Edition

SSJE dispone di strumenti di gestione dei privilegi per semplificare questa attività.

Utilizzo di Open Admin Too

OAT dispone di strumenti per la gestione dei privilegi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top