Mysql
 sql >> Base de données >  >> RDS >> Mysql

Accorder des privilèges sur plusieurs tables avec un préfixe spécifique

Remarque préalable :ce n'est pas ma réponse. Je l'ai trouvé sur http://lists.mysql.com/mysql/202610 et ont copié et collé pour plus de simplicité crédit à Stephen Cook

Vous pouvez utiliser la vue INFORMATION_SCHEMA.TABLES pour générer les instructions GRANT pour vous. Rédigez une requête dans le sens suivant :

SELECT   CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';')
FROM     INFORMATION_SCHEMA.TABLES
WHERE    TABLE_SCHEMA = 'test'
      AND TABLE_NAME LIKE 'foo_%'

Ensuite, exécutez-le, copiez les résultats et exécutez-les en tant que requête ou script. Vous pouvez bien sûr devenir aussi fou que vous le souhaitez avec cela, par exemple si vous faites cela pour de nombreux utilisateurs, écrivez peut-être une procédure stockée qui prend un paramètre pour le nom d'utilisateur et peut donc être utilisée comme un outil chaque fois que vous en avez besoin.

Ce n'est pas une syntaxe que vous avez demandée, mais c'est une bonne astuce qui fonctionne.

--

Remplacez le schéma de table 'test' par le nom de votre base de données. foo_% peut être remplacé par le préfixe approprié_%

J'ai essayé cela par moi-même et cela a très bien fonctionné.