quarta-feira, 19 de setembro de 2012

MySQL - Permissões em várias tabelas

Como diz o titulo esta publicação refere-se ao motor de base de dados MySQL,  e a situação que surgiu tinha como base a atribuição de permissões a um determinado utilizador a várias tabelas, mas não todas.

Esta operação mesmo com programa de gestão de bases de dados como o MySQL Workbench  é um operação que se torna penosa, visto que usa sistemas de árvore para navegar e vistos para marcar as permissões.

A maneira mais rápida então que arranjei de resolver isto, é através da criação de um script para atribuir as permissões ao utilizador por tabela dentro da base de dados.

Execute o seguinte SQL.
Nota: Garanta que o seu utilizador tem permissões totais dentro do MySQL, porque o script vai consultar tabelas de controle do motor.

Antes de prosseguir, já deve ter o utilizador criado no MySQL

-- Cria a linha a utilizar na próxima execução, atribuía mais permissões se assim se justificar 

SELECT CONCAT("GRANT SELECT, INSERT, UPDATE, DELETE ON ", TABLE_NAME," TO 'testeUser'@'localhost' ;") AS ex
-- Aqui vai ao motor requisitar todas as tabelas
FROM INFORMATION_SCHEMA.TABLES
-- Indica que só quer as tabelas da base de dados indicada no WHERE
WHERE TABLE_SCHEMA = "NomeBaseDados"
-- Se pretender excluir algumas tabelas indique o nome das mesmas
AND TABLE_NAME NOT IN ('tblPagamentos','tblBancos');    


Nota: se pretender incluir apenas algumas tabelas as linha acima deverá ser:
AND TABLE_NAME IN ('tblPagamentos','tblBancos');      

O resultado final, deverá ser exportado para ficheiro de texto.



Próximo passo, executar o que está no ficheiro de texto.

E por fim executar o commando :
FLUSH PRIVILEGES;

Para que todas as permissões se tornem activas.


Sem comentários:

Enviar um comentário