sql >> Base de Datos >  >> RDS >> Mysql

Otorgar privilegios en varias tablas con prefijo específico

Nota anticipada:esta no es mi respuesta. Lo encontré en http://lists.mysql.com/mysql/202610 y he copiado y pegado para simplificar el crédito a Stephen Cook

Puede utilizar la vista INFORMACION_ESQUEMA.TABLAS para generar las instrucciones GRANT por usted. Escriba una consulta a lo largo de estas líneas:

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

Luego ejecútelo, copie los resultados y ejecútelos como una consulta o script. Por supuesto, puede volverse tan loco como quiera con esto, por ejemplo, si hace esto para muchos usuarios, tal vez escriba un procedimiento almacenado que tome un parámetro para el nombre de usuario y, por lo tanto, pueda usarse como una herramienta cuando lo necesite.

No es una sintaxis que pediste, pero es un buen truco que funciona.

--

Reemplace el esquema de tabla 'prueba' con el nombre de su base de datos. foo_% se puede reemplazar con el prefijo_% apropiado

Probé esto por mi cuenta y funcionó muy bien.