Informix, conceder escolha em todas as tabelas
-
22-07-2019 - |
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?
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 ??h3>
SELECT 'GRANT SELECT ON "' || TRIM(owner) || '".' || TRIM(tabname) ||
' TO someuser AS dba;'
FROM "informix".systables
WHERE tabid >= 100;
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.