sql >> Databasteknik >  >> RDS >> Mysql

Ge privilegier på flera tabeller med specifika prefix

Förhandsanmärkning:Detta är inte mitt svar. Jag hittade den på http://lists.mysql.com/mysql/202610 och har kopierat och klistrat in för enkelhetens skull kredit till Stephen Cook

Du kan använda vyn INFORMATION_SCHEMA.TABLES för att generera GRANT-utlåtanden åt dig. Skriv en fråga på följande sätt:

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

Kör sedan det, kopiera resultaten och kör dessa resultat som en fråga eller skript. Du kan givetvis bli hur galen du vill med detta, till exempel om du gör detta för många användare kanske du skriver en lagrad procedur som tar en parameter för användarnamnet och kan därför användas som ett verktyg när du behöver det.

Det är inte en syntax du bad om, men det är ett trevligt trick som fungerar.

--

Ersätt tabellschemat 'test' med namnet på din databas. foo_% kan ersättas med det lämpliga prefixet_%

Jag provade detta på egen hand och det fungerade utmärkt.



  1. TPC-H-prestanda sedan PostgreSQL 8.3

  2. MySQL-gruppering efter vecka, baserat på en datumkolumn?

  3. FEL:oavslutad citerad sträng vid eller nära

  4. Hur skickar jag sqlparameter till IN()?