Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conceda privilégios em várias tabelas com prefixo específico


Nota prévia:Esta não é a minha resposta. Encontrei em http://lists.mysql.com/mysql/202610 e copiou e colou, por simplicidade, crédito a Stephen Cook

Você pode usar a visualização INFORMATION_SCHEMA.TABLES para gerar as instruções GRANT para você. Escreva uma consulta ao longo destas linhas:
SELECT   CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';')
FROM     INFORMATION_SCHEMA.TABLES
WHERE    TABLE_SCHEMA = 'test'
      AND TABLE_NAME LIKE 'foo_%'

Em seguida, execute-o, copie os resultados e execute esses resultados como uma consulta ou script. É claro que você pode ficar tão louco quanto quiser com isso, por exemplo, se você fizer isso para muitos usuários, talvez escreva um procedimento armazenado que receba um parâmetro para o nome de usuário e, portanto, possa ser usado como uma ferramenta sempre que você precisar.

Não é uma sintaxe que você pediu, mas é um bom truque que funciona.

--

Substitua o esquema de tabela 'teste' pelo nome do seu banco de dados. foo_% pode ser substituído pelo prefixo apropriado_%

Eu tentei isso por conta própria e funcionou muito bem.