Mysql
 sql >> Database >  >> RDS >> Mysql

Concedi privilegi su più tabelle con prefisso specifico

Nota anticipata:questa non è la mia risposta. L'ho trovato su http://lists.mysql.com/mysql/202610 e ho copiato e incollato per semplicità il merito a Stephen Cook

È possibile utilizzare la vista INFORMATION_SCHEMA.TABLES per generare le dichiarazioni GRANT per te. Scrivi una query in questo modo:

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

Quindi eseguilo, copia i risultati ed esegui quei risultati come query o script. Ovviamente puoi impazzire quanto vuoi con questo, ad esempio se lo fai per molti utenti magari scrivi una procedura memorizzata che prende un parametro per il nome utente e può quindi essere usata come strumento ogni volta che ne hai bisogno.

Non è una sintassi che hai chiesto, ma è un bel trucco che funziona.

--

Sostituisci lo schema della tabella 'test' con il nome del tuo database. foo_% può essere sostituito con il prefisso appropriato_%

L'ho provato da solo e ha funzionato benissimo.