Pergunta

Com Informix posso grant select em uma tabela como;

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

Como posso executar esta em todas as tabelas no banco de dados?

Foi útil?

Solução

Não há uma maneira simples de fazer isso (tanto no padrão SQL ou Informix), mas geralmente não é necessária, uma vez que privilégio específico é normalmente concedida por padrão. No entanto, eu imagino que na verdade você quer fazer operações mais gerais também, e quer saber o que opções existem.

Dependendo do que você está apontando para fazer e como você tem o seu sistema configurado, você pode atingir seus objetivos de várias maneiras.

Força bruta - resposta direta à pergunta
 SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
        ' TO someuser AS dba;'
     FROM "informix".systables
     WHERE tabid >= 100;

Tome a saída deste e alimentá-lo em um programa. Eu uso SQLCMD para o trabalho, até porque ele não gera saída indesejada:

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 -

As barras invertidas extras são necessários para contornar o shell. As opções de '-f -' não são estritamente necessárias, mas torná-lo explícito que o segundo SQLCMD irá ler da entrada padrão. Se você usar DB-Access, você tem que se preocupar com o palavreado que ele gera -. Que é a razão pela qual eu escrevi SQLCMD em primeiro lugar

Claramente, esta solução pode razoavelmente ser facilmente script e generalizada -. Você apenas tem que ter cuidado com o uso de citações

Usando papéis

Outra opção é criar uma função que tem todas as permissões que você quer, e então conceder essa função aos usuários, conforme necessário. A desvantagem para isso é que o seu software precisa definir o papel para que as pessoas que ligam têm esse privilégio. Uma possibilidade é definir o papel select-somente como o papel padrão para cada usuário.

Usando o Server Studio Java Edição

SSJE tem ferramentas de gestão de privilégio para simplificar esta tarefa.

Usando o Open de administração Too

OAT tem ferramentas para ajudar com a gestão de privilégio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top